@diplodoc/tabs-extension 3.7.1 → 3.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,6 +16,7 @@ export declare class TabsController {
16
16
  private _onSelectTabHandlers;
17
17
  private _options;
18
18
  private _currentPageTabGroups;
19
+ private _isRestoringTabs;
19
20
  constructor(document: Document, options?: Partial<TabsControllerOptions>);
20
21
  configure(options: Partial<TabsControllerOptions>): void;
21
22
  onSelectTab(handler: Handler): () => void;
@@ -1,2 +1,2 @@
1
- @charset "UTF-8";.yfm-tabs{margin-bottom:15px}.yfm-tab-list{display:flex;flex-wrap:wrap;margin-bottom:15px;border-bottom:1px solid rgba(0,0,0,.07)}.yfm-tab{margin-bottom:-1px;margin-right:20px;border-bottom:2px solid transparent;padding:6px 0 7px;font-weight:700;outline:none;cursor:pointer;user-select:none;white-space:break-spaces}.yfm-tab:last-child{margin-right:0}.yfm-tab:hover,.yfm-tab:active{color:#004080}.yfm-tab.active{border-bottom-color:#027bf3}.yfm-tab:focus{outline:2px solid #4d90fe;border-radius:2px}.yfm-tab:focus:not(:focus-visible){outline:0}.yfm-tab-panel{position:relative;visibility:hidden;overflow:hidden;height:0}.yfm-tab-panel:first-child{margin-top:0!important}.yfm-tab-panel:last-child{margin-bottom:0!important}.yfm-tab-panel.active{visibility:visible;overflow:visible;height:auto}.yfm-tabs-dropdown{position:relative;width:90%;margin-bottom:0;--yfm-tabs-dropdown-color: #F2F2F2;--yfm-tabs-dropdown-text-color: #A8A8A8;--yfm-tabs-dropdown-color-border: #CCC}.yfm-tabs-dropdown .yfm-tabs-dropdown-select{padding:10px 30px 10px 10px;background:var(--g-color-base-background);border:1px solid var(--yfm-tabs-dropdown-color-border);color:var(--yfm-tabs-dropdown-text-color);border-radius:5px;position:relative;user-select:none;margin-bottom:10px;max-width:500px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;z-index:10}.yfm-tabs-dropdown .yfm-tabs-dropdown-select.filled{color:inherit}.yfm-tabs-dropdown .yfm-tabs-dropdown-select:after{content:"";position:absolute;display:block;right:10px;top:25%;transform:rotate(90deg);transition:transform .2s;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im0zIDYgNSA1IDUtNSIvPjwvc3ZnPg==);width:20px;height:20px}.yfm-tabs-dropdown .yfm-tabs-dropdown-select.active+.yfm-tabs-dropdown-menu{transform:scaleY(1)}.yfm-tabs-dropdown .yfm-tabs-dropdown-select.active:after{transform:rotate(0)}.yfm-tabs-dropdown>.yfm-tabs-dropdown-menu{width:100%;max-width:500px;max-height:500px;overflow-y:scroll;padding:10px 0;position:absolute;z-index:10;display:flex;flex-direction:column;border:1px solid var(--yfm-tabs-dropdown-color-border);border-radius:5px;background-color:var(--g-color-base-background);transform:scaleY(0);list-style:none;z-index:100;transition:transform 125ms;transform-origin:top center}.yfm-tabs-dropdown>.yfm-tabs-dropdown-menu>li{user-select:none;cursor:pointer;background-color:var(--g-color-base-background)}.yfm-tabs-dropdown>.yfm-tabs-dropdown-menu>li:hover{background-color:var(--g-color-base-simple-hover);color:inherit}.yfm-tabs-dropdown>.yfm-tabs-dropdown-menu>li.yfm-tab{padding:5px 0 5px 10px;border-radius:0;border-bottom:unset;margin:0;font-weight:500}.yfm-tabs-dropdown>.yfm-tabs-dropdown-menu>li.yfm-tab.active{background-color:var(--g-color-base-selection)}.yfm-tabs-dropdown>.yfm-tabs-dropdown-menu>li.yfm-tab:hover{color:inherit}.yfm-tabs-dropdown>.yfm-tab-panel.active{border:1px solid #F2F2F2;transform:translateY(-30px);border-radius:12px;padding:40px 12px 16px}.yfm-tabs-dropdown>.yfm-tabs{width:100%}.yfm-tabs-accordion{max-width:80%}.yfm-tabs-accordion>.yfm-tab:first-of-type{border-top-color:transparent}.yfm-tabs-accordion .yfm-tab{padding:8px 0 12px 6px;position:relative;border-top:1px solid #E5E5E5;font-weight:500;scroll-margin-top:20px}.yfm-tabs-accordion .yfm-tab:after{content:"";position:absolute;display:block;right:10px;top:25%;transform:rotate(-180deg);transition:transform .3s,background-color .2s;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im0zIDYgNSA1IDUtNSIvPjwvc3ZnPg==);width:20px;height:20px;border-radius:6px;padding:6px}.yfm-tabs-accordion .yfm-tab.active{border-bottom-color:transparent!important;font-weight:700}.yfm-tabs-accordion .yfm-tab.active:after{transform:rotate(0)}.yfm-tabs-accordion .yfm-tab:hover{color:#3f5799}.yfm-tabs-accordion .yfm-tab-panel.active{margin:10px 0 25px 6px}.yfm-tabs-vertical>.yfm-tab-list{flex-direction:column;border-bottom:unset}.yfm-tabs-vertical>.yfm-tab-panel{margin-left:30px}.yfm-tabs-vertical>.yfm-tab-group{display:flex;flex-direction:row;margin-bottom:5px}.yfm-tabs-vertical .yfm-vertical-tab>input[type=radio]{visibility:hidden;width:0;height:0}.yfm-tabs-vertical .yfm-vertical-tab>label{display:inline-block;cursor:pointer;position:relative;padding-left:25px;margin-right:0;line-height:18px;user-select:none}.yfm-tabs-vertical .yfm-vertical-tab>label:before{font-family:initial!important;content:"";position:absolute;left:0;bottom:1px;border-radius:50%;width:18px;height:18px;border:#dfdfdf 1px solid;background-color:#fff}.yfm-tabs-vertical .yfm-vertical-tab input[type=radio]:checked+label:before{content:"\2022";background-color:#5282ff;text-align:center;vertical-align:middle;font-size:20px;white-space:pre;display:inline-flex;justify-content:center;align-items:center;color:#fff}.yfm-tabs-vertical .yfm-vertical-tab{border-bottom:unset!important}
1
+ @charset "UTF-8";.yfm-tabs{margin-bottom:15px}.yfm-tab-list{display:flex;flex-wrap:wrap;margin-bottom:15px;border-bottom:1px solid rgba(0,0,0,.07)}.yfm-tab{margin-bottom:-1px;margin-right:20px;border-bottom:2px solid transparent;padding:6px 0 7px;font-weight:700;outline:none;cursor:pointer;user-select:none;white-space:break-spaces}.yfm-tab:last-child{margin-right:0}.yfm-tab:hover,.yfm-tab:active{color:#004080}.yfm-tab.active{border-bottom-color:#027bf3}.yfm-tab:focus{outline:2px solid #4d90fe;border-radius:2px}.yfm-tab:focus:not(:focus-visible){outline:0}.yfm-tab-panel{position:absolute;visibility:hidden;overflow:hidden;height:0}.yfm-tab-panel:first-child{margin-top:0!important}.yfm-tab-panel:last-child{margin-bottom:0!important}.yfm-tab-panel.active{position:relative;visibility:visible;overflow:visible;height:auto}.yfm-tabs-dropdown{position:relative;width:90%;margin-bottom:0;--yfm-tabs-dropdown-color: #F2F2F2;--yfm-tabs-dropdown-text-color: #A8A8A8;--yfm-tabs-dropdown-color-border: #CCC}.yfm-tabs-dropdown .yfm-tabs-dropdown-select{padding:10px 30px 10px 10px;background:var(--g-color-base-background);border:1px solid var(--yfm-tabs-dropdown-color-border);color:var(--yfm-tabs-dropdown-text-color);border-radius:5px;position:relative;user-select:none;margin-bottom:10px;max-width:500px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;z-index:10}.yfm-tabs-dropdown .yfm-tabs-dropdown-select.filled{color:inherit}.yfm-tabs-dropdown .yfm-tabs-dropdown-select:after{content:"";position:absolute;display:block;right:10px;top:25%;transform:rotate(90deg);transition:transform .2s;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im0zIDYgNSA1IDUtNSIvPjwvc3ZnPg==);width:20px;height:20px}.yfm-tabs-dropdown .yfm-tabs-dropdown-select.active+.yfm-tabs-dropdown-menu{transform:scaleY(1)}.yfm-tabs-dropdown .yfm-tabs-dropdown-select.active:after{transform:rotate(0)}.yfm-tabs-dropdown>.yfm-tabs-dropdown-menu{width:100%;max-width:500px;max-height:500px;overflow-y:scroll;padding:10px 0;position:absolute;z-index:10;display:flex;flex-direction:column;border:1px solid var(--yfm-tabs-dropdown-color-border);border-radius:5px;background-color:var(--g-color-base-background);transform:scaleY(0);list-style:none;z-index:100;transition:transform 125ms;transform-origin:top center}.yfm-tabs-dropdown>.yfm-tabs-dropdown-menu>li{user-select:none;cursor:pointer;background-color:var(--g-color-base-background)}.yfm-tabs-dropdown>.yfm-tabs-dropdown-menu>li:hover{background-color:var(--g-color-base-simple-hover);color:inherit}.yfm-tabs-dropdown>.yfm-tabs-dropdown-menu>li.yfm-tab{padding:5px 0 5px 10px;border-radius:0;border-bottom:unset;margin:0;font-weight:500}.yfm-tabs-dropdown>.yfm-tabs-dropdown-menu>li.yfm-tab.active{background-color:var(--g-color-base-selection)}.yfm-tabs-dropdown>.yfm-tabs-dropdown-menu>li.yfm-tab:hover{color:inherit}.yfm-tabs-dropdown>.yfm-tab-panel.active{border:1px solid #F2F2F2;transform:translateY(-30px);border-radius:12px;padding:40px 12px 16px}.yfm-tabs-dropdown>.yfm-tabs{width:100%}.yfm-tabs-accordion>.yfm-tab:first-of-type{border-top-color:transparent}.yfm-tabs-accordion .yfm-tab{padding:8px 0 12px 6px;position:relative;display:flex;justify-content:space-between;gap:10px;border-top:1px solid #E5E5E5;font-weight:500;scroll-margin-top:20px}.yfm-tabs-accordion .yfm-tab:after{content:"";display:block;transform:rotate(-180deg);transition:transform .3s,background-color .2s;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im0zIDYgNSA1IDUtNSIvPjwvc3ZnPg==);width:20px;height:20px;border-radius:6px;padding:6px;align-self:center}.yfm-tabs-accordion .yfm-tab.active{border-bottom-color:transparent!important;font-weight:700}.yfm-tabs-accordion .yfm-tab.active:after{transform:rotate(0)}.yfm-tabs-accordion .yfm-tab:hover{color:#3f5799}.yfm-tabs-accordion .yfm-tab-panel.active{margin:10px 0 25px 6px}.yfm-tabs-vertical>.yfm-tab-list{flex-direction:column;border-bottom:unset}.yfm-tabs-vertical>.yfm-tab-panel{margin-left:30px}.yfm-tabs-vertical>.yfm-tab-group{display:flex;flex-direction:row;margin-bottom:5px}.yfm-tabs-vertical .yfm-vertical-tab>input[type=radio]{visibility:hidden;width:0;height:0}.yfm-tabs-vertical .yfm-vertical-tab>label{display:inline-block;cursor:pointer;position:relative;padding-left:25px;margin-right:0;line-height:18px;user-select:none}.yfm-tabs-vertical .yfm-vertical-tab>label:before{font-family:initial!important;content:"";position:absolute;left:0;bottom:1px;border-radius:50%;width:18px;height:18px;border:#dfdfdf 1px solid;background-color:#fff}.yfm-tabs-vertical .yfm-vertical-tab input[type=radio]:checked+label:before{content:"\2022";background-color:#5282ff;text-align:center;vertical-align:middle;font-size:20px;white-space:pre;display:inline-flex;justify-content:center;align-items:center;color:#fff}.yfm-tabs-vertical .yfm-vertical-tab{border-bottom:unset!important}
2
2
  /*# sourceMappingURL=index.css.map */
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/runtime/scss/tabs.scss"],
4
- "sourcesContent": [".yfm-tabs {\n margin-bottom: 15px;\n}\n\n.yfm-tab-list {\n display: flex;\n flex-wrap: wrap;\n margin-bottom: 15px;\n\n border-bottom: 1px solid rgba(0, 0, 0, 0.07);\n}\n\n\n.yfm-tab {\n margin-bottom: -1px;\n margin-right: 20px;\n border-bottom: 2px solid transparent;\n\n padding: 6px 0 7px 0;\n font-weight: 700;\n outline: none;\n cursor: pointer;\n user-select: none;\n white-space: break-spaces;\n\n &:last-child {\n margin-right: 0;\n }\n\n &:hover, &:active {\n color: #004080;\n }\n\n &.active {\n border-bottom-color: #027bf3;\n }\n\n &:focus {\n outline: 2px solid #4d90fe;\n border-radius: 2px;\n }\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n}\n\n.yfm-tab-panel {\n position: relative;\n visibility: hidden;\n overflow: hidden;\n height: 0;\n\n &:first-child {\n margin-top: 0 !important;\n }\n\n &:last-child {\n margin-bottom: 0 !important;\n }\n\n &.active {\n visibility: visible;\n overflow: visible;\n height: auto;\n }\n}\n\n\n.yfm-tabs-dropdown {\n position: relative;\n width: 90%;\n margin-bottom: 0;\n\n --yfm-tabs-dropdown-color: #F2F2F2;\n --yfm-tabs-dropdown-text-color: #A8A8A8;\n --yfm-tabs-dropdown-color-border: #CCC;\n\n .yfm-tabs-dropdown-select {\n padding: 10px 30px 10px 10px;\n background: var(--g-color-base-background);\n border: 1px solid var(--yfm-tabs-dropdown-color-border);\n color: var(--yfm-tabs-dropdown-text-color);\n border-radius: 5px;\n position: relative;\n user-select: none;\n margin-bottom: 10px;\n max-width: 500px;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n z-index: 10;\n \n &.filled {\n color: inherit;\n }\n\n\n &::after {\n content: '';\n position: absolute;\n display: block;\n right: 10px;\n top: 25%;\n transform: rotate(90deg);\n transition: transform 200ms;\n background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im0zIDYgNSA1IDUtNSIvPjwvc3ZnPg==);\n width: 20px;\n height: 20px;\n }\n\n &.active {\n & + .yfm-tabs-dropdown-menu {\n transform: scaleY(1);\n }\n \n &::after {\n transform: rotate(0deg);\n }\n }\n }\n\n & > .yfm-tabs-dropdown-menu {\n width: 100%;\n max-width: 500px;\n max-height: 500px;\n overflow-y: scroll;\n padding: 10px 0px;\n position: absolute;\n z-index: 10;\n\n display: flex;\n flex-direction: column;\n\n border: 1px solid var(--yfm-tabs-dropdown-color-border);\n border-radius: 5px;\n background-color: var(--g-color-base-background);\n transform: scaleY(0);\n\n list-style: none;\n z-index: 100;\n\n transition: transform 125ms;\n transform-origin: top center;\n \n & > li {\n user-select: none;\n cursor: pointer;\n background-color: var(--g-color-base-background);\n\n &:hover {\n background-color: var(--g-color-base-simple-hover);\n color: inherit;\n }\n\n &.yfm-tab {\n padding: 5px 0 5px 10px;\n border-radius: 0;\n border-bottom: unset;\n margin: 0;\n font-weight: 500;\n\n &.active {\n background-color: var(--g-color-base-selection);\n }\n\n &:hover {\n color: inherit;\n }\n }\n }\n }\n\n & > .yfm-tab-panel {\n &.active {\n border: 1px solid #F2F2F2;\n transform: translateY(-30px);\n border-radius: 12px;\n padding: 40px 12px 16px 12px;\n }\n }\n\n & > .yfm-tabs {\n width: 100%;\n }\n}\n\n.yfm-tabs-accordion {\n max-width: 80%;\n\n & > .yfm-tab:first-of-type {\n border-top-color: transparent;\n }\n \n .yfm-tab {\n padding: 8px 0 12px 6px;;\n position: relative;\n\n border-top: 1px solid #E5E5E5;\n font-weight: 500;\n\n scroll-margin-top: 20px;\n\n &::after {\n content: '';\n position: absolute;\n display: block;\n right: 10px;\n top: 25%;\n transform: rotate(-180deg);\n transition: \n transform 300ms,\n background-color 200ms;\n background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im0zIDYgNSA1IDUtNSIvPjwvc3ZnPg==);\n width: 20px;\n height: 20px;\n border-radius: 6px;\n padding: 6px;\n }\n\n &.active {\n border-bottom-color: transparent !important;\n font-weight: 700;\n\n &::after {\n transform: rotate(0);\n }\n }\n\n &:hover {\n color: #3F5799;\n }\n }\n\n .yfm-tab-panel {\n &.active {\n margin: 10px 0 25px 6px;\n }\n }\n}\n\n.yfm-tabs-vertical {\n & > .yfm-tab-list {\n flex-direction: column;\n border-bottom: unset;\n }\n\n & > .yfm-tab-panel {\n margin-left: 30px;\n }\n\n & > .yfm-tab-group {\n display: flex;\n flex-direction: row;\n margin-bottom: 5px;\n }\n\n .yfm-vertical-tab > input[type=radio] {\n visibility: hidden;\n width: 0;\n height: 0;\n }\n\n .yfm-vertical-tab > label {\n display: inline-block;\n cursor: pointer;\n position: relative;\n padding-left: 25px;\n margin-right: 0;\n line-height: 18px;\n user-select: none;\n }\n\n .yfm-vertical-tab > label:before {\n font-family: initial !important;\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 1px;\n border-radius: 50%;\n width: 18px;\n height: 18px; \n border: #dfdfdf 1px solid;\n background-color: white;\n }\n \n /* Checked */\n .yfm-vertical-tab input[type=radio]:checked + label:before {\n content: \"•\";\n background-color: rgb(82, 130, 255);\n text-align: center;\n vertical-align: middle;\n font-size: 20px;\n white-space: pre;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n color: white;\n }\n \n .yfm-vertical-tab {\n border-bottom: unset !important;\n }\n\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": [".yfm-tabs {\n margin-bottom: 15px;\n}\n\n.yfm-tab-list {\n display: flex;\n flex-wrap: wrap;\n margin-bottom: 15px;\n\n border-bottom: 1px solid rgba(0, 0, 0, 0.07);\n}\n\n\n.yfm-tab {\n margin-bottom: -1px;\n margin-right: 20px;\n border-bottom: 2px solid transparent;\n\n padding: 6px 0 7px 0;\n font-weight: 700;\n outline: none;\n cursor: pointer;\n user-select: none;\n white-space: break-spaces;\n\n &:last-child {\n margin-right: 0;\n }\n\n &:hover, &:active {\n color: #004080;\n }\n\n &.active {\n border-bottom-color: #027bf3;\n }\n\n &:focus {\n outline: 2px solid #4d90fe;\n border-radius: 2px;\n }\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n}\n\n.yfm-tab-panel {\n position: absolute;\n visibility: hidden;\n overflow: hidden;\n height: 0;\n\n &:first-child {\n margin-top: 0 !important;\n }\n\n &:last-child {\n margin-bottom: 0 !important;\n }\n\n &.active {\n position: relative;\n visibility: visible;\n overflow: visible;\n height: auto;\n }\n}\n\n\n.yfm-tabs-dropdown {\n position: relative;\n width: 90%;\n margin-bottom: 0;\n\n --yfm-tabs-dropdown-color: #F2F2F2;\n --yfm-tabs-dropdown-text-color: #A8A8A8;\n --yfm-tabs-dropdown-color-border: #CCC;\n\n .yfm-tabs-dropdown-select {\n padding: 10px 30px 10px 10px;\n background: var(--g-color-base-background);\n border: 1px solid var(--yfm-tabs-dropdown-color-border);\n color: var(--yfm-tabs-dropdown-text-color);\n border-radius: 5px;\n position: relative;\n user-select: none;\n margin-bottom: 10px;\n max-width: 500px;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n z-index: 10;\n \n &.filled {\n color: inherit;\n }\n\n\n &::after {\n content: '';\n position: absolute;\n display: block;\n right: 10px;\n top: 25%;\n transform: rotate(90deg);\n transition: transform 200ms;\n background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im0zIDYgNSA1IDUtNSIvPjwvc3ZnPg==);\n width: 20px;\n height: 20px;\n }\n\n &.active {\n & + .yfm-tabs-dropdown-menu {\n transform: scaleY(1);\n }\n \n &::after {\n transform: rotate(0deg);\n }\n }\n }\n\n & > .yfm-tabs-dropdown-menu {\n width: 100%;\n max-width: 500px;\n max-height: 500px;\n overflow-y: scroll;\n padding: 10px 0px;\n position: absolute;\n z-index: 10;\n\n display: flex;\n flex-direction: column;\n\n border: 1px solid var(--yfm-tabs-dropdown-color-border);\n border-radius: 5px;\n background-color: var(--g-color-base-background);\n transform: scaleY(0);\n\n list-style: none;\n z-index: 100;\n\n transition: transform 125ms;\n transform-origin: top center;\n \n & > li {\n user-select: none;\n cursor: pointer;\n background-color: var(--g-color-base-background);\n\n &:hover {\n background-color: var(--g-color-base-simple-hover);\n color: inherit;\n }\n\n &.yfm-tab {\n padding: 5px 0 5px 10px;\n border-radius: 0;\n border-bottom: unset;\n margin: 0;\n font-weight: 500;\n\n &.active {\n background-color: var(--g-color-base-selection);\n }\n\n &:hover {\n color: inherit;\n }\n }\n }\n }\n\n & > .yfm-tab-panel {\n &.active {\n border: 1px solid #F2F2F2;\n transform: translateY(-30px);\n border-radius: 12px;\n padding: 40px 12px 16px 12px;\n }\n }\n\n & > .yfm-tabs {\n width: 100%;\n }\n}\n\n.yfm-tabs-accordion {\n\n & > .yfm-tab:first-of-type {\n border-top-color: transparent;\n }\n \n .yfm-tab {\n padding: 8px 0 12px 6px;;\n position: relative;\n display: flex;\n justify-content: space-between;\n gap: 10px;\n\n border-top: 1px solid #E5E5E5;\n font-weight: 500;\n\n scroll-margin-top: 20px;\n\n &::after {\n content: '';\n display: block;\n transform: rotate(-180deg);\n transition: \n transform 300ms,\n background-color 200ms;\n background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Im0zIDYgNSA1IDUtNSIvPjwvc3ZnPg==);\n width: 20px;\n height: 20px;\n border-radius: 6px;\n padding: 6px;\n align-self: center;\n }\n\n &.active {\n border-bottom-color: transparent !important;\n font-weight: 700;\n\n &::after {\n transform: rotate(0);\n }\n }\n\n &:hover {\n color: #3F5799;\n }\n }\n\n .yfm-tab-panel {\n &.active {\n margin: 10px 0 25px 6px;\n }\n }\n}\n\n.yfm-tabs-vertical {\n & > .yfm-tab-list {\n flex-direction: column;\n border-bottom: unset;\n }\n\n & > .yfm-tab-panel {\n margin-left: 30px;\n }\n\n & > .yfm-tab-group {\n display: flex;\n flex-direction: row;\n margin-bottom: 5px;\n }\n\n .yfm-vertical-tab > input[type=radio] {\n visibility: hidden;\n width: 0;\n height: 0;\n }\n\n .yfm-vertical-tab > label {\n display: inline-block;\n cursor: pointer;\n position: relative;\n padding-left: 25px;\n margin-right: 0;\n line-height: 18px;\n user-select: none;\n }\n\n .yfm-vertical-tab > label:before {\n font-family: initial !important;\n content: \"\";\n position: absolute;\n left: 0;\n bottom: 1px;\n border-radius: 50%;\n width: 18px;\n height: 18px; \n border: #dfdfdf 1px solid;\n background-color: white;\n }\n \n /* Checked */\n .yfm-vertical-tab input[type=radio]:checked + label:before {\n content: \"•\";\n background-color: rgb(82, 130, 255);\n text-align: center;\n vertical-align: middle;\n font-size: 20px;\n white-space: pre;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n color: white;\n }\n \n .yfm-vertical-tab {\n border-bottom: unset !important;\n }\n\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";(()=>{var x="yfm-tabs",H="yfm-tab",F="yfm-tab-panel",D="yfm-tab-list",l="active";var B="data-diplodoc-group",G="data-diplodoc-key",y="data-diplodoc-variant",w="data-diplodoc-id",U="defaultTabsGroup-";var O="data-diplodoc-forced";var L="yfm-tabs-dropdown-select";var W="yfm-tabs-vertical";var R=(g=>(g.Regular="regular",g.Radio="radio",g.Dropdown="dropdown",g.Accordion="accordion",g))(R||{}),X=Symbol.for("diplodocTabs");var f=C=>{let t=C.composedPath();return Array.isArray(t)&&t.length>0?t[0]:C.target},Z=C=>{let t=f(C);return!t||!t.matches},v=C=>Math.abs(C.scrollHeight-C.clientHeight)>1?C:C.parentElement?v(C.parentElement):void 0,Q=(C,t)=>{let e=C.getBoundingClientRect(),o=t.getBoundingClientRect();return{top:e.top-o.top,left:e.left-o.left,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}};var n={TABS:`.${x}`,TAB_LIST:`.${D}`,TAB:`.${H}`,TAB_PANEL:`.${F}`,VERTICAL_TABS:`.${W}`},h=class{constructor(t,e={}){this._onSelectTabHandlers=new Set;this._currentPageTabGroups=[];this._document=t,this._options=Object.assign({saveTabsToLocalStorage:!1,saveTabsToQueryStateMode:"none"},e),this._document.addEventListener("click",o=>{let g=f(o);if(o.target&&this.hideAllDropdown(o.target),Z(o))return;if(this.isElementDropdownSelect(g)){g.classList.toggle(l);return}if(!this.isValidTabElement(g))return;let I=this.getTabDataFromHTMLElement(g);I&&this._selectTab(I,g)}),this._document.addEventListener("keydown",o=>{let g=null;switch(o.key){case"ArrowLeft":{g="left";break}case"ArrowRight":{g="right";break}case"ArrowUp":{g="left";break}case"ArrowDown":{g="right";break}}if(!g)return;let I=f(o);if(Z(o)||!this.isValidTabElement(I))return;let{tabs:a,nodes:c}=this.getTabs(I),i=this.getTabDataFromHTMLElement(I),r=a.findIndex(({key:s})=>(i==null?void 0:i.key)&&s===i.key);if(!i||a.length<=1||r===-1)return;let A=(r+(g==="left"?-1:1)+a.length)%a.length;this.selectTab(a[A]),c[A].focus()})}configure(t){this._options=Object.assign(this._options,t)}onSelectTab(t){return this._onSelectTabHandlers.add(t),()=>{this._onSelectTabHandlers.delete(t)}}selectTabById(t,e){let o=this._document.querySelector(`${n.TAB}[${w}="${t}"]`);if(!o||!this.isValidTabElement(o))return;let g=this.getTabDataFromHTMLElement(o);g&&this._selectTab(g,o),e!=null&&e.scrollToElement&&o.scrollIntoView()}selectTab(t){this._selectTab(t)}restoreTabs(t){for(let[e,o]of Object.entries(t))if(e){let g={group:e,...o};this.selectTab(g)}}getTabsFromLocalStorage(){return JSON.parse(localStorage.getItem("tabsHistory")||"{}")}getTabsFromSearchQuery(){let t={},e=new URLSearchParams(window.location.search);return e.has("tabs")&&(e.get("tabs")||"").split(",").forEach(I=>{let a=I.split("_"),[c,i]=a,r="regular";if(a.length===3&&(r=a[2]),c&&i&&Object.values(R).includes(r)){let A=i;t[c]={key:A,variant:r}}}),t}updateLocalStorageWithTabs(t){this._options.saveTabsToLocalStorage&&localStorage.setItem("tabsHistory",JSON.stringify(t))}updateQueryParamWithTabs(t){let e=new URLSearchParams(window.location.search),o=Object.entries(t).map(([I,{key:a,variant:c}])=>c==="regular"?`${I}_${a}`:`${I}_${a}_${c}`);e.set("tabs",o.join(","));let g=`${window.location.origin}${window.location.pathname}?${e.toString()}`;window.history.replaceState({},document.title,g)}getCurrentPageTabHistory(t){return Object.fromEntries(Object.entries(t).filter(([e])=>this._currentPageTabGroups.includes(e)))}onPageChanged(){this._currentPageTabGroups=this.getCurrentPageTabGroups()}getCurrentPageTabGroups(){let t=this._document.getElementsByClassName(x),e=new Set;return Array.from(t).forEach(o=>{let g=o.getAttribute(B);g&&e.add(g)}),Array.from(e)}clearTabsPreferred(){localStorage.removeItem("tabsHistory"),this.updateQueryParamWithTabs({})}_selectTab(t,e){let{group:o,key:g,variant:I}=t;if(!o)return;this.saveTabPreferred({group:o,key:g,variant:I});let a=e&&v(e),c=a&&Q(e,a);this.updateHTML({group:o,key:g,variant:I},e,I)>0&&(this.fireSelectTabEvent({group:o,key:g,variant:I},e==null?void 0:e.dataset.diplodocId),c&&this.resetScroll(e,a,c))}updateHTML(t,e,o){switch(o){case"radio":return this.updateHTMLRadio(t,e);case"accordion":return this.updateHTMLAccordion(t,e);case"regular":return this.updateHTMLRegular(t);case"dropdown":return this.updateHTMLDropdown(t);default:return 0}}saveTabPreferred(t){let e={};switch(this._options.saveTabsToLocalStorage&&(e=JSON.parse(localStorage.getItem("tabsHistory")||"{}")),e[t.group]={key:t.key,variant:t.variant},this._options.saveTabsToLocalStorage&&this.updateLocalStorageWithTabs(e),this._options.saveTabsToQueryStateMode){case"all":{this.updateQueryParamWithTabs(e);break}case"page":{this.updateQueryParamWithTabs(this.getCurrentPageTabHistory(e));break}}}updateHTMLRadio(t,e){let{group:o,key:g}=t,{isForced:I,root:a}=this.didTabOpenForce(e),c=I?`.yfm-vertical-tab[${O}="true"]`:"",i=this._document.querySelectorAll(`${n.TABS}[${B}="${o}"] ${n.TAB}[${G}="${g}"]${c}`);I&&(a==null||a.removeAttribute(O));let r=0;return i.forEach(A=>{let m=A.parentNode.children;for(let p=0;p<m.length;p+=2){let[d,b]=[m.item(p),m.item(p+1)],u=d.children.item(0);if(d===A){u.checked?(d.classList.remove("active"),b==null||b.classList.remove("active"),u.removeAttribute("checked")):(d.classList.add("active"),b==null||b.classList.add("active"),u.setAttribute("checked","true"));continue}u.hasAttribute("checked")&&(d.classList.remove("active"),b==null||b.classList.remove("active"),u.removeAttribute("checked")),r++}}),r}updateHTMLRegular(t){let{group:e,key:o}=t,g=this._document.querySelectorAll(`${n.TABS}[${B}="${e}"] ${n.TAB}[${G}="${o}"]`),I=0;return g.forEach(a=>{let c=a;if(!this.isValidTabElement(c)||c.dataset.diplodocIsActive==="true")return;I++;let i=a,r=i.parentNode,A=r==null?void 0:r.parentNode,s=Array.from((r==null?void 0:r.querySelectorAll(n.TAB))||[]),m=Array.from((A==null?void 0:A.children)||[]).filter(d=>d.classList.contains(F)),p=s.indexOf(i);s.forEach((d,b)=>{let u=m[b],T=b===p,S=d;S.dataset.diplodocIsActive=T?"true":"false",d.classList.toggle(l,T),d.setAttribute("aria-selected",T.toString()),d.setAttribute("tabindex",T?"0":"-1"),u.classList.toggle(l,T)})}),I}updateHTMLDropdown(t){let{group:e,key:o}=t,g=this._document.querySelectorAll(`${n.TABS}[${B}="${e}"] ${n.TAB}[${G}="${o}"]`),I=0;return g.forEach(a=>{let c=a.closest(`[${y}=dropdown]`);if(!(c!=null&&c.children))return;let i=c.children.item(0),r=c.children.item(1);i==null||i.classList.remove(l);let A=Array.from((r==null?void 0:r.children)||[]).indexOf(a)+2;for(let s=2;s<c.children.length;s++){let m=c.children.item(s),p=r==null?void 0:r.children.item(s-2);if(I++,A===s){m==null||m.classList.add(l),p.classList.add(l),i.innerHTML=a.innerHTML,i.classList.add("filled");continue}p.classList.remove(l),m.classList.remove(l)}}),I}updateHTMLAccordion(t,e){let{group:o,key:g}=t,I=this._document.querySelectorAll(`${n.TABS}[${B}="${o}"] ${n.TAB}[${G}="${g}"]`),a=0;return I.forEach(c=>{let i=c.closest(`[${y}=accordion]`);if(i!=null&&i.children)for(let r=0;r<i.children.length;r+=2){let A=i.children.item(r),s=i.children.item(r+1);if(a++,c===A){A==null||A.classList.toggle(l),s==null||s.classList.toggle(l);continue}A==null||A.classList.remove(l),s==null||s.classList.remove(l)}}),e&&!this.checkVisible(e)&&setTimeout(()=>{e.scrollIntoView({block:"nearest"})}),a}checkVisible(t){let e=t.getBoundingClientRect(),o=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-o>=0)}hideAllDropdown(t){this._document.querySelectorAll(".yfm-tabs-dropdown-select.active").forEach(o=>{o.contains(t)||o.classList.remove(l)})}resetScroll(t,e,o){let g=Q(t,e),I=g.top-o.top,a=g.left-o.left,c=g.scrollTop-o.scrollTop,i=g.scrollLeft-o.scrollLeft;e.scrollTo(e.scrollLeft+a-i,e.scrollTop+I-c)}didTabOpenForce(t){if(!t)return{};if(t.dataset.diplodocForced)return{root:t,isForced:!0};let e=t.dataset.diplodocVerticalTab?t:t.parentElement,o=typeof(e==null?void 0:e.dataset.diplodocForced)!="undefined";return{root:e,isForced:o}}fireSelectTabEvent(t,e){let{group:o,key:g,variant:I}=t,a=o.startsWith(U)?{key:g,variant:I}:t;this._onSelectTabHandlers.forEach(c=>{c({tab:a,currentTabId:e})})}getTabsType(t){let e=t.closest(`[${y}]`);if(e)return e.dataset.diplodocVariant}isValidTabElement(t){return!!this.getTabsType(t)}isElementDropdownSelect(t){return t.classList.contains(L)}getTabDataFromHTMLElement(t){var I,a,c;let e=this.getTabsType(t);if(e==="radio"){let i=t.dataset.diplodocVerticalTab?t:t.parentElement,r=i.dataset.diplodocKey,A=(I=i.closest(n.TABS))==null?void 0:I.dataset.diplodocGroup;return r&&A?{group:A,key:r,variant:"radio"}:null}if(e==="dropdown"||e==="accordion"){let i=t.dataset.diplodocKey,r=(a=t.closest(n.TABS))==null?void 0:a.dataset.diplodocGroup;return i&&r?{group:r,key:i,variant:e}:null}let o=t.dataset.diplodocKey,g=(c=t.closest(n.TABS))==null?void 0:c.dataset.diplodocGroup;return o&&g?{group:g,key:o,variant:"regular"}:null}getTabs(t){var I,a;let e=(I=t.closest(n.TABS))==null?void 0:I.dataset.diplodocGroup,o=(a=t.closest(n.TAB_LIST))==null?void 0:a.querySelectorAll(n.TAB),g=[];return o.forEach(c=>{let i=c==null?void 0:c.dataset.diplodocKey;i&&g.push({group:e,key:i,variant:"regular"})}),{tabs:g,nodes:o}}};typeof window!="undefined"&&typeof document!="undefined"&&!window[X]&&(window[X]=new h(document));})();
1
+ "use strict";(()=>{var x="yfm-tabs",H="yfm-tab",O="yfm-tab-panel",L="yfm-tab-list",l="active";var B="data-diplodoc-group",G="data-diplodoc-key",y="data-diplodoc-variant",N="data-diplodoc-id",W="defaultTabsGroup-";var F="data-diplodoc-forced";var S="yfm-tabs-dropdown-select";var U="yfm-tabs-vertical";var v=(g=>(g.Regular="regular",g.Radio="radio",g.Dropdown="dropdown",g.Accordion="accordion",g))(v||{}),X=Symbol.for("diplodocTabs");var h=C=>{let t=C.composedPath();return Array.isArray(t)&&t.length>0?t[0]:C.target},R=C=>{let t=h(C);return!t||!t.matches},Q=C=>Math.abs(C.scrollHeight-C.clientHeight)>1?C:C.parentElement?Q(C.parentElement):void 0,Z=(C,t)=>{let e=C.getBoundingClientRect(),o=t.getBoundingClientRect();return{top:e.top-o.top,left:e.left-o.left,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}};var n={TABS:`.${x}`,TAB_LIST:`.${L}`,TAB:`.${H}`,TAB_PANEL:`.${O}`,VERTICAL_TABS:`.${U}`},f=class{constructor(t,e={}){this._onSelectTabHandlers=new Set;this._currentPageTabGroups=[];this._isRestoringTabs=!1;this._document=t,this._options=Object.assign({saveTabsToLocalStorage:!1,saveTabsToQueryStateMode:"none"},e),this._document.addEventListener("click",o=>{let g=h(o);if(o.target&&this.hideAllDropdown(o.target),R(o))return;if(this.isElementDropdownSelect(g)){g.classList.toggle(l);return}if(!this.isValidTabElement(g))return;let I=this.getTabDataFromHTMLElement(g);I&&this._selectTab(I,g)}),this._document.addEventListener("keydown",o=>{let g=null;switch(o.key){case"ArrowLeft":{g="left";break}case"ArrowRight":{g="right";break}case"ArrowUp":{g="left";break}case"ArrowDown":{g="right";break}}if(!g)return;let I=h(o);if(R(o)||!this.isValidTabElement(I))return;let{tabs:a,nodes:c}=this.getTabs(I),i=this.getTabDataFromHTMLElement(I),r=a.findIndex(({key:A})=>(i==null?void 0:i.key)&&A===i.key);if(!i||a.length<=1||r===-1)return;let s=(r+(g==="left"?-1:1)+a.length)%a.length;this.selectTab(a[s]),c[s].focus()})}configure(t){this._options=Object.assign(this._options,t)}onSelectTab(t){return this._onSelectTabHandlers.add(t),()=>{this._onSelectTabHandlers.delete(t)}}selectTabById(t,e){let o=this._document.querySelector(`${n.TAB}[${N}="${t}"]`);if(!o||!this.isValidTabElement(o))return;let g=this.getTabDataFromHTMLElement(o);g&&this._selectTab(g,o),e!=null&&e.scrollToElement&&o.scrollIntoView()}selectTab(t){this._selectTab(t)}restoreTabs(t){this._isRestoringTabs=!0;try{for(let[e,o]of Object.entries(t))if(e){let g={group:e,...o};this.selectTab(g)}}finally{this._isRestoringTabs=!1}}getTabsFromLocalStorage(){return JSON.parse(localStorage.getItem("tabsHistory")||"{}")}getTabsFromSearchQuery(){let t={},e=new URLSearchParams(window.location.search);return e.has("tabs")&&(e.get("tabs")||"").split(",").forEach(I=>{let a=I.split("_"),[c,i]=a,r="regular";if(a.length===3&&(r=a[2]),c&&i&&Object.values(v).includes(r)){let s=i;t[c]={key:s,variant:r}}}),t}updateLocalStorageWithTabs(t){this._options.saveTabsToLocalStorage&&(this._isRestoringTabs||localStorage.setItem("tabsHistory",JSON.stringify(t)))}updateQueryParamWithTabs(t){if(this._isRestoringTabs)return;let e=new URLSearchParams(window.location.search),o=Object.entries(t).map(([a,{key:c,variant:i}])=>i==="regular"?`${a}_${c}`:`${a}_${c}_${i}`);o.length>0?e.set("tabs",o.join(",")):e.delete("tabs");let g=history.state||{},I=new URL(window.location.href);I.search=e.toString(),window.history.replaceState({...g},document.title,I.href)}getCurrentPageTabHistory(t){return Object.fromEntries(Object.entries(t).filter(([e])=>this._currentPageTabGroups.includes(e)))}onPageChanged(){this._currentPageTabGroups=this.getCurrentPageTabGroups()}getCurrentPageTabGroups(){let t=this._document.getElementsByClassName(x),e=new Set;return Array.from(t).forEach(o=>{let g=o.getAttribute(B);g&&e.add(g)}),Array.from(e)}clearTabsPreferred(){localStorage.removeItem("tabsHistory"),this.updateQueryParamWithTabs({})}_selectTab(t,e){let{group:o,key:g,variant:I}=t;if(!o)return;this.saveTabPreferred({group:o,key:g,variant:I});let a=e&&Q(e),c=a&&Z(e,a);this.updateHTML({group:o,key:g,variant:I},e,I)>0&&(this.fireSelectTabEvent({group:o,key:g,variant:I},e==null?void 0:e.dataset.diplodocId),c&&this.resetScroll(e,a,c))}updateHTML(t,e,o){switch(o){case"radio":return this.updateHTMLRadio(t,e);case"accordion":return this.updateHTMLAccordion(t,e);case"regular":return this.updateHTMLRegular(t);case"dropdown":return this.updateHTMLDropdown(t);default:return 0}}saveTabPreferred(t){let e={};switch(this._options.saveTabsToLocalStorage&&(e=JSON.parse(localStorage.getItem("tabsHistory")||"{}")),e[t.group]={key:t.key,variant:t.variant},this._options.saveTabsToLocalStorage&&this.updateLocalStorageWithTabs(e),this._options.saveTabsToQueryStateMode){case"all":{this.updateQueryParamWithTabs(e);break}case"page":{this.updateQueryParamWithTabs(this.getCurrentPageTabHistory(e));break}}}updateHTMLRadio(t,e){let{group:o,key:g}=t,{isForced:I,root:a}=this.didTabOpenForce(e),c=I?`.yfm-vertical-tab[${F}="true"]`:"",i=this._document.querySelectorAll(`${n.TABS}[${B}="${o}"] ${n.TAB}[${G}="${g}"]${c}`);I&&(a==null||a.removeAttribute(F));let r=0;return i.forEach(s=>{let m=s.parentNode.children;for(let p=0;p<m.length;p+=2){let[b,d]=[m.item(p),m.item(p+1)],u=b.children.item(0);if(b===s){u.checked?(b.classList.remove("active"),d==null||d.classList.remove("active"),u.removeAttribute("checked")):(b.classList.add("active"),d==null||d.classList.add("active"),u.setAttribute("checked","true"));continue}u.hasAttribute("checked")&&(b.classList.remove("active"),d==null||d.classList.remove("active"),u.removeAttribute("checked")),r++}}),r}updateHTMLRegular(t){let{group:e,key:o}=t,g=this._document.querySelectorAll(`${n.TABS}[${B}="${e}"] ${n.TAB}[${G}="${o}"]`),I=0;return g.forEach(a=>{let c=a;if(!this.isValidTabElement(c)||c.dataset.diplodocIsActive==="true")return;I++;let i=a,r=i.parentNode,s=r==null?void 0:r.parentNode,A=Array.from((r==null?void 0:r.querySelectorAll(n.TAB))||[]),m=Array.from((s==null?void 0:s.children)||[]).filter(b=>b.classList.contains(O)),p=A.indexOf(i);A.forEach((b,d)=>{let u=m[d],T=d===p,w=b;w.dataset.diplodocIsActive=T?"true":"false",b.classList.toggle(l,T),b.setAttribute("aria-selected",T.toString()),b.setAttribute("tabindex",T?"0":"-1"),u.classList.toggle(l,T)})}),I}updateHTMLDropdown(t){let{group:e,key:o}=t,g=this._document.querySelectorAll(`${n.TABS}[${B}="${e}"] ${n.TAB}[${G}="${o}"]`),I=0;return g.forEach(a=>{let c=a.closest(`[${y}=dropdown]`);if(!(c!=null&&c.children))return;let i=c.children.item(0),r=c.children.item(1);i==null||i.classList.remove(l);let s=Array.from((r==null?void 0:r.children)||[]).indexOf(a)+2;for(let A=2;A<c.children.length;A++){let m=c.children.item(A),p=r==null?void 0:r.children.item(A-2);if(I++,s===A){m==null||m.classList.add(l),p.classList.add(l),i.innerHTML=a.innerHTML,i.classList.add("filled");continue}p.classList.remove(l),m.classList.remove(l)}}),I}updateHTMLAccordion(t,e){let{group:o,key:g}=t,I=this._document.querySelectorAll(`${n.TABS}[${B}="${o}"] ${n.TAB}[${G}="${g}"]`),a=0;return I.forEach(c=>{let i=c.closest(`[${y}=accordion]`);if(i!=null&&i.children)for(let r=0;r<i.children.length;r+=2){let s=i.children.item(r),A=i.children.item(r+1);if(a++,c===s){s==null||s.classList.toggle(l),A==null||A.classList.toggle(l);continue}s==null||s.classList.remove(l),A==null||A.classList.remove(l)}}),e&&!this.checkVisible(e)&&setTimeout(()=>{e.scrollIntoView({block:"nearest"})}),a}checkVisible(t){let e=t.getBoundingClientRect(),o=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-o>=0)}hideAllDropdown(t){this._document.querySelectorAll(".yfm-tabs-dropdown-select.active").forEach(o=>{o.contains(t)||o.classList.remove(l)})}resetScroll(t,e,o){let g=Z(t,e),I=g.top-o.top,a=g.left-o.left,c=g.scrollTop-o.scrollTop,i=g.scrollLeft-o.scrollLeft;e.scrollTo(e.scrollLeft+a-i,e.scrollTop+I-c)}didTabOpenForce(t){if(!t)return{};if(t.dataset.diplodocForced)return{root:t,isForced:!0};let e=t.dataset.diplodocVerticalTab?t:t.parentElement,o=typeof(e==null?void 0:e.dataset.diplodocForced)!="undefined";return{root:e,isForced:o}}fireSelectTabEvent(t,e){let{group:o,key:g,variant:I}=t,a=o.startsWith(W)?{key:g,variant:I}:t;this._onSelectTabHandlers.forEach(c=>{c({tab:a,currentTabId:e})})}getTabsType(t){let e=t.closest(`[${y}]`);if(e)return e.dataset.diplodocVariant}isValidTabElement(t){return!!this.getTabsType(t)}isElementDropdownSelect(t){return t.classList.contains(S)}getTabDataFromHTMLElement(t){var I,a,c;let e=this.getTabsType(t);if(e==="radio"){let i=t.dataset.diplodocVerticalTab?t:t.parentElement,r=i.dataset.diplodocKey,s=(I=i.closest(n.TABS))==null?void 0:I.dataset.diplodocGroup;return r&&s?{group:s,key:r,variant:"radio"}:null}if(e==="dropdown"||e==="accordion"){let i=t.dataset.diplodocKey,r=(a=t.closest(n.TABS))==null?void 0:a.dataset.diplodocGroup;return i&&r?{group:r,key:i,variant:e}:null}let o=t.dataset.diplodocKey,g=(c=t.closest(n.TABS))==null?void 0:c.dataset.diplodocGroup;return o&&g?{group:g,key:o,variant:"regular"}:null}getTabs(t){var I,a;let e=(I=t.closest(n.TABS))==null?void 0:I.dataset.diplodocGroup,o=(a=t.closest(n.TAB_LIST))==null?void 0:a.querySelectorAll(n.TAB),g=[];return o.forEach(c=>{let i=c==null?void 0:c.dataset.diplodocKey;i&&g.push({group:e,key:i,variant:"regular"})}),{tabs:g,nodes:o}}};typeof window!="undefined"&&typeof document!="undefined"&&!window[X]&&(window[X]=new f(document));})();
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/common.ts", "../../src/runtime/utils.ts", "../../src/runtime/TabsController.ts", "../../src/runtime/index.ts"],
4
- "sourcesContent": ["import {type TabsController} from './runtime/TabsController';\n\nexport const TAB_RE = /`?{% list tabs .*?%}`?/;\nexport const TABS_CLASSNAME = 'yfm-tabs';\nexport const TAB_CLASSNAME = 'yfm-tab';\nexport const TAB_PANEL_CLASSNAME = 'yfm-tab-panel';\nexport const TABS_LIST_CLASSNAME = 'yfm-tab-list';\nexport const ACTIVE_CLASSNAME = 'active';\nexport const TAB_GROUP_CLASSNAME = 'yfm-tab-group';\nexport const TAB_ACTIVE_KEY = 'data-diplodoc-is-active';\nexport const GROUP_DATA_KEY = 'data-diplodoc-group';\nexport const TAB_DATA_KEY = 'data-diplodoc-key';\nexport const TAB_DATA_VARIANT = 'data-diplodoc-variant';\nexport const TAB_DATA_ID = 'data-diplodoc-id';\nexport const DEFAULT_TABS_GROUP_PREFIX = 'defaultTabsGroup-';\nexport const ACTIVE_TAB_TEXT = '{selected}';\nexport const TAB_FORCED_OPEN = 'data-diplodoc-forced';\n\nexport const TABS_DROPDOWN_CLASSNAME = 'yfm-tabs-dropdown';\nexport const TABS_DROPDOWN_MENU_CLASSNAME = 'yfm-tabs-dropdown-menu';\nexport const TABS_DROPDOWN_SELECT = 'yfm-tabs-dropdown-select';\n\nexport const TABS_ACCORDION_CLASSNAME = 'yfm-tabs-accordion';\nexport const TABS_ACCORDION_CLIENT_HEIGHT = 'data-yfm-tabs-accordion-client-heights';\n\nexport const TABS_RADIO_CLASSNAME = 'yfm-tabs-vertical';\nexport const VERTICAL_TAB_CLASSNAME = 'yfm-vertical-tab';\nexport const TAB_DATA_VERTICAL_TAB = 'data-diplodoc-vertical-tab';\nexport const TAB_RADIO_KEY = 'data-diplodoc-input';\n\nexport enum TabsVariants {\n Regular = 'regular',\n Radio = 'radio',\n Dropdown = 'dropdown',\n Accordion = 'accordion',\n}\n\nexport type EnabledVariants = Partial<Record<TabsVariants, boolean>>;\n\nexport interface Tab {\n group?: string;\n key: string;\n variant: TabsVariants;\n}\n\nexport interface SelectedTabEvent {\n tab: Tab;\n currentTabId?: string;\n}\n\nexport const GLOBAL_SYMBOL: unique symbol = Symbol.for('diplodocTabs');\n\ndeclare global {\n interface Window {\n [GLOBAL_SYMBOL]: TabsController;\n }\n}\n", "export const getEventTarget = (event: Event) => {\n const path = event.composedPath();\n return Array.isArray(path) && path.length > 0 ? path[0] : event.target;\n};\n\nexport const isCustom = (event: Event) => {\n const target = getEventTarget(event);\n return !target || !(target as HTMLElement).matches;\n};\n\nexport const getClosestScrollableParent = (element: HTMLElement): HTMLElement | undefined => {\n if (Math.abs(element.scrollHeight - element.clientHeight) > 1) {\n return element;\n }\n\n return element.parentElement ? getClosestScrollableParent(element.parentElement) : undefined;\n};\n\nexport interface ElementOffset {\n top: number;\n left: number;\n scrollTop: number;\n scrollLeft: number;\n}\n\nexport const getOffsetByScrollableParent = (\n element: HTMLElement,\n scrollableParent: HTMLElement,\n): ElementOffset => {\n const elementBounds = element.getBoundingClientRect();\n const scrollableParentBounds = scrollableParent.getBoundingClientRect();\n return {\n top: elementBounds.top - scrollableParentBounds.top,\n left: elementBounds.left - scrollableParentBounds.left,\n scrollTop: scrollableParent.scrollTop,\n scrollLeft: scrollableParent.scrollLeft,\n };\n};\n", "import {\n ACTIVE_CLASSNAME,\n DEFAULT_TABS_GROUP_PREFIX,\n GROUP_DATA_KEY,\n SelectedTabEvent,\n TABS_CLASSNAME,\n TABS_DROPDOWN_SELECT,\n TABS_LIST_CLASSNAME,\n TABS_RADIO_CLASSNAME,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_DATA_VARIANT,\n TAB_FORCED_OPEN,\n TAB_PANEL_CLASSNAME,\n Tab,\n TabsVariants,\n} from '../common';\n\nimport {\n ElementOffset,\n getClosestScrollableParent,\n getEventTarget,\n getOffsetByScrollableParent,\n isCustom,\n} from './utils';\n\nconst Selector = {\n TABS: `.${TABS_CLASSNAME}`,\n TAB_LIST: `.${TABS_LIST_CLASSNAME}`,\n TAB: `.${TAB_CLASSNAME}`,\n TAB_PANEL: `.${TAB_PANEL_CLASSNAME}`,\n VERTICAL_TABS: `.${TABS_RADIO_CLASSNAME}`,\n};\n\nexport interface ISelectTabByIdOptions {\n scrollToElement: boolean;\n}\n\ntype Handler = (data: SelectedTabEvent) => void;\n\ntype TabSwitchDirection = 'left' | 'right';\n\nexport type TabsHistory = Record<string, {key: string; variant: TabsVariants}>;\n\nexport type TabsControllerOptions = {\n saveTabsToLocalStorage: boolean;\n saveTabsToQueryStateMode: 'all' | 'page' | 'none';\n};\n\nexport class TabsController {\n private _document: Document;\n private _onSelectTabHandlers: Set<Handler> = new Set();\n private _options: TabsControllerOptions;\n private _currentPageTabGroups: string[] = [];\n\n // TODO: remove side effects from constructor\n constructor(document: Document, options: Partial<TabsControllerOptions> = {}) {\n this._document = document;\n this._options = Object.assign(\n {\n saveTabsToLocalStorage: false,\n saveTabsToQueryStateMode: 'none',\n },\n options,\n );\n\n this._document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n\n if (event.target) {\n this.hideAllDropdown(event.target as HTMLElement);\n }\n\n if (isCustom(event)) {\n return;\n }\n\n if (this.isElementDropdownSelect(target)) {\n target.classList.toggle(ACTIVE_CLASSNAME);\n\n return;\n }\n\n if (!this.isValidTabElement(target)) {\n return;\n }\n\n const tab = this.getTabDataFromHTMLElement(target);\n\n if (tab) {\n this._selectTab(tab, target);\n }\n });\n\n this._document.addEventListener('keydown', (event) => {\n let direction: TabSwitchDirection | null = null;\n switch (event.key) {\n case 'ArrowLeft': {\n direction = 'left';\n break;\n }\n case 'ArrowRight': {\n direction = 'right';\n break;\n }\n case 'ArrowUp': {\n direction = 'left';\n break;\n }\n case 'ArrowDown': {\n direction = 'right';\n break;\n }\n }\n if (!direction) {\n return;\n }\n\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !this.isValidTabElement(target)) {\n return;\n }\n\n const {tabs, nodes} = this.getTabs(target);\n const currentTab = this.getTabDataFromHTMLElement(target);\n const currentTabIndex = tabs.findIndex(\n ({key}) => currentTab?.key && key === currentTab.key,\n );\n if (!currentTab || tabs.length <= 1 || currentTabIndex === -1) {\n return;\n }\n\n const newIndex =\n (currentTabIndex + (direction === 'left' ? -1 : 1) + tabs.length) % tabs.length;\n\n this.selectTab(tabs[newIndex]);\n nodes[newIndex].focus();\n });\n }\n\n configure(options: Partial<TabsControllerOptions>) {\n this._options = Object.assign(this._options, options);\n }\n\n onSelectTab(handler: Handler) {\n this._onSelectTabHandlers.add(handler);\n\n return () => {\n this._onSelectTabHandlers.delete(handler);\n };\n }\n\n selectTabById(id: string, options?: ISelectTabByIdOptions) {\n const target = this._document.querySelector(\n `${Selector.TAB}[${TAB_DATA_ID}=\"${id}\"]`,\n ) as HTMLElement;\n\n if (!target || !this.isValidTabElement(target)) {\n return;\n }\n\n const tab = this.getTabDataFromHTMLElement(target);\n\n if (tab) {\n this._selectTab(tab, target);\n }\n\n if (options?.scrollToElement) {\n target.scrollIntoView();\n }\n }\n\n selectTab(tab: Tab) {\n this._selectTab(tab);\n }\n\n restoreTabs(tabsHistory: TabsHistory) {\n for (const [group, fields] of Object.entries(tabsHistory)) {\n if (group) {\n const tab = {group, ...fields};\n this.selectTab(tab);\n }\n }\n }\n\n getTabsFromLocalStorage(): TabsHistory {\n return JSON.parse(localStorage.getItem('tabsHistory') || '{}') as TabsHistory;\n }\n\n getTabsFromSearchQuery(): TabsHistory {\n const tabsHistory = {} as TabsHistory;\n const urlParams = new URLSearchParams(window.location.search);\n if (urlParams.has('tabs')) {\n const tabsFromQuery = urlParams.get('tabs') || '';\n const tabConfigs = tabsFromQuery.split(',');\n\n tabConfigs.forEach((config) => {\n const splitConfig = config.split('_');\n const [group, key] = splitConfig;\n let variant = TabsVariants.Regular;\n if (splitConfig.length === 3) {\n variant = splitConfig[2] as TabsVariants;\n }\n\n if (group && key && Object.values(TabsVariants).includes(variant)) {\n const keyWithSpaces = key;\n tabsHistory[group] = {key: keyWithSpaces, variant: variant};\n }\n });\n }\n\n return tabsHistory;\n }\n\n updateLocalStorageWithTabs(tabsHistory: TabsHistory) {\n if (!this._options.saveTabsToLocalStorage) {\n return;\n }\n\n localStorage.setItem('tabsHistory', JSON.stringify(tabsHistory));\n }\n\n updateQueryParamWithTabs(tabsHistory: TabsHistory) {\n const urlParams = new URLSearchParams(window.location.search);\n const tabsArray = Object.entries(tabsHistory).map(([group, {key, variant}]) => {\n if (variant === TabsVariants.Regular) {\n return `${group}_${key}`;\n }\n return `${group}_${key}_${variant}`;\n });\n urlParams.set('tabs', tabsArray.join(','));\n\n // Update the URL without reloading the page\n const newUrl = `${window.location.origin}${window.location.pathname}?${urlParams.toString()}`;\n window.history.replaceState({}, document.title, newUrl);\n }\n\n getCurrentPageTabHistory(tabsHistory: TabsHistory) {\n return Object.fromEntries(\n Object.entries(tabsHistory).filter(([group]) =>\n this._currentPageTabGroups.includes(group),\n ),\n );\n }\n\n onPageChanged() {\n this._currentPageTabGroups = this.getCurrentPageTabGroups();\n }\n\n getCurrentPageTabGroups(): string[] {\n const tabs = this._document.getElementsByClassName(TABS_CLASSNAME);\n const groups = new Set<string>();\n\n Array.from(tabs).forEach((tab) => {\n const group = tab.getAttribute(GROUP_DATA_KEY);\n if (group) {\n groups.add(group);\n }\n });\n\n return Array.from(groups);\n }\n\n clearTabsPreferred() {\n localStorage.removeItem('tabsHistory');\n this.updateQueryParamWithTabs({});\n }\n\n private _selectTab(tab: Tab, targetTab?: HTMLElement) {\n const {group, key, variant} = tab;\n\n if (!group) {\n return;\n }\n\n this.saveTabPreferred({group, key, variant});\n\n const scrollableParent = targetTab && getClosestScrollableParent(targetTab);\n const previousTargetOffset =\n scrollableParent && getOffsetByScrollableParent(targetTab, scrollableParent);\n\n const updatedTabs = this.updateHTML({group, key, variant}, targetTab, variant);\n\n if (updatedTabs > 0) {\n this.fireSelectTabEvent({group, key, variant}, targetTab?.dataset.diplodocId);\n\n if (previousTargetOffset) {\n this.resetScroll(targetTab, scrollableParent, previousTargetOffset);\n }\n }\n }\n\n private updateHTML(tab: Required<Tab>, target: HTMLElement | undefined, variant: TabsVariants) {\n switch (variant) {\n case TabsVariants.Radio: {\n return this.updateHTMLRadio(tab, target);\n }\n case TabsVariants.Accordion: {\n return this.updateHTMLAccordion(tab, target);\n }\n case TabsVariants.Regular: {\n return this.updateHTMLRegular(tab);\n }\n case TabsVariants.Dropdown: {\n return this.updateHTMLDropdown(tab);\n }\n default: {\n return 0;\n }\n }\n }\n\n private saveTabPreferred(tab: Required<Tab>) {\n let tabsHistory = {} as TabsHistory;\n\n if (this._options.saveTabsToLocalStorage) {\n tabsHistory = JSON.parse(localStorage.getItem('tabsHistory') || '{}');\n }\n\n tabsHistory[tab.group] = {key: tab.key, variant: tab.variant};\n\n if (this._options.saveTabsToLocalStorage) {\n this.updateLocalStorageWithTabs(tabsHistory);\n }\n\n switch (this._options.saveTabsToQueryStateMode) {\n case 'all': {\n this.updateQueryParamWithTabs(tabsHistory);\n break;\n }\n case 'page': {\n this.updateQueryParamWithTabs(this.getCurrentPageTabHistory(tabsHistory));\n break;\n }\n }\n }\n\n private updateHTMLRadio(tab: Required<Tab>, target: HTMLElement | undefined) {\n const {group, key} = tab;\n\n const {isForced, root} = this.didTabOpenForce(target);\n\n const singleTabSelector = isForced ? `.yfm-vertical-tab[${TAB_FORCED_OPEN}=\"true\"]` : '';\n\n const tabs = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]${singleTabSelector}`,\n );\n\n if (isForced) {\n root?.removeAttribute(TAB_FORCED_OPEN);\n }\n\n let updated = 0;\n\n tabs.forEach((tab) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const root = tab.parentNode!;\n const elements = root.children;\n\n for (let i = 0; i < elements.length; i += 2) {\n const [title, content] = [elements.item(i), elements.item(i + 1)] as HTMLElement[];\n\n const input = title.children.item(0) as HTMLInputElement;\n\n if (title === tab) {\n const checked = input.checked;\n\n if (checked) {\n title.classList.remove('active');\n content?.classList.remove('active');\n\n input.removeAttribute('checked');\n } else {\n title.classList.add('active');\n content?.classList.add('active');\n\n input.setAttribute('checked', 'true');\n }\n\n continue;\n }\n\n if (input.hasAttribute('checked')) {\n title.classList.remove('active');\n content?.classList.remove('active');\n\n input.removeAttribute('checked');\n }\n\n updated++;\n }\n });\n\n return updated;\n }\n\n private updateHTMLRegular(tab: Required<Tab>) {\n const {group, key} = tab;\n\n const tabs = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let updated = 0;\n\n tabs.forEach((element) => {\n const htmlElem = element as HTMLElement;\n if (!this.isValidTabElement(htmlElem) || htmlElem.dataset.diplodocIsActive === 'true') {\n return;\n }\n\n updated++;\n\n const tab = element;\n const tabList = tab.parentNode;\n const tabsContainer = tabList?.parentNode;\n const allTabs = Array.from(tabList?.querySelectorAll(Selector.TAB) || []);\n const allPanels = Array.from(tabsContainer?.children || []).filter((node) =>\n node.classList.contains(TAB_PANEL_CLASSNAME),\n );\n const targetIndex = allTabs.indexOf(tab);\n\n allTabs.forEach((tab, i) => {\n const panel = allPanels[i];\n const isTargetTab = i === targetIndex;\n const htmlElem = tab as HTMLElement;\n\n htmlElem.dataset.diplodocIsActive = isTargetTab ? 'true' : 'false';\n\n tab.classList.toggle(ACTIVE_CLASSNAME, isTargetTab);\n tab.setAttribute('aria-selected', isTargetTab.toString());\n tab.setAttribute('tabindex', isTargetTab ? '0' : '-1');\n panel.classList.toggle(ACTIVE_CLASSNAME, isTargetTab);\n });\n });\n\n return updated;\n }\n\n private updateHTMLDropdown(tab: Required<Tab>) {\n const {group, key} = tab;\n\n const tabs = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let changed = 0;\n\n tabs.forEach((tab) => {\n const dropdown = tab.closest(`[${TAB_DATA_VARIANT}=${TabsVariants.Dropdown}]`);\n\n if (!dropdown?.children) {\n return;\n }\n\n const select = dropdown.children.item(0) as HTMLElement;\n const menu = dropdown.children.item(1);\n\n select?.classList.remove(ACTIVE_CLASSNAME);\n\n /* first and second elements are select / menu, skipping them */\n const changedIndex = Array.from(menu?.children || []).indexOf(tab) + 2;\n\n for (let i = 2; i < dropdown.children.length; i++) {\n const item = dropdown.children.item(i) as HTMLElement;\n const menuItem = menu?.children.item(i - 2) as HTMLElement;\n\n changed++;\n\n if (changedIndex === i) {\n item?.classList.add(ACTIVE_CLASSNAME);\n menuItem.classList.add(ACTIVE_CLASSNAME);\n\n select.innerHTML = tab.innerHTML;\n select.classList.add('filled');\n\n continue;\n }\n\n menuItem.classList.remove(ACTIVE_CLASSNAME);\n item.classList.remove(ACTIVE_CLASSNAME);\n }\n });\n\n return changed;\n }\n\n private updateHTMLAccordion(tab: Required<Tab>, target: HTMLElement | undefined) {\n const {group, key} = tab;\n\n const tabs = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let changed = 0;\n\n tabs.forEach((tab) => {\n const accordion = tab.closest(`[${TAB_DATA_VARIANT}=${TabsVariants.Accordion}]`);\n\n if (!accordion?.children) {\n return;\n }\n\n for (let i = 0; i < accordion.children.length; i += 2) {\n const title = accordion.children.item(i);\n const currentTab = accordion.children.item(i + 1);\n\n changed++;\n\n if (tab === title) {\n title?.classList.toggle(ACTIVE_CLASSNAME);\n currentTab?.classList.toggle(ACTIVE_CLASSNAME);\n\n continue;\n }\n\n title?.classList.remove(ACTIVE_CLASSNAME);\n currentTab?.classList.remove(ACTIVE_CLASSNAME);\n }\n });\n\n if (target && !this.checkVisible(target)) {\n setTimeout(() => {\n target.scrollIntoView({block: 'nearest'});\n });\n }\n\n return changed;\n }\n\n private checkVisible(element: HTMLElement) {\n const rect = element.getBoundingClientRect();\n const viewHeight = Math.max(document.documentElement.clientHeight, window.innerHeight);\n\n return !(rect.bottom < 0 || rect.top - viewHeight >= 0);\n }\n\n private hideAllDropdown(target: HTMLElement) {\n const dropdowns = this._document.querySelectorAll('.yfm-tabs-dropdown-select.active');\n\n dropdowns.forEach((menu) => {\n if (!menu.contains(target)) {\n menu.classList.remove(ACTIVE_CLASSNAME);\n }\n });\n }\n\n private resetScroll(\n target: HTMLElement,\n scrollableParent: HTMLElement,\n previousTargetOffset: ElementOffset,\n ) {\n const targetOffset = getOffsetByScrollableParent(target, scrollableParent);\n const topDelta = targetOffset.top - previousTargetOffset.top;\n const leftDelta = targetOffset.left - previousTargetOffset.left;\n const scrollTopDelta = targetOffset.scrollTop - previousTargetOffset.scrollTop;\n const scrollLeftDelta = targetOffset.scrollLeft - previousTargetOffset.scrollLeft;\n scrollableParent.scrollTo(\n scrollableParent.scrollLeft + leftDelta - scrollLeftDelta,\n scrollableParent.scrollTop + topDelta - scrollTopDelta,\n );\n }\n\n private didTabOpenForce(target?: HTMLElement) {\n if (!target) {\n return {};\n }\n\n if (target.dataset.diplodocForced) {\n return {root: target, isForced: true};\n }\n\n const root = target.dataset.diplodocVerticalTab ? target : target.parentElement;\n\n const isForced = typeof root?.dataset.diplodocForced !== 'undefined';\n\n return {root, isForced};\n }\n\n private fireSelectTabEvent(tab: Required<Tab>, diplodocId?: string) {\n const {group, key, variant: align} = tab;\n\n const eventTab: Tab = group.startsWith(DEFAULT_TABS_GROUP_PREFIX)\n ? {key, variant: align}\n : tab;\n\n this._onSelectTabHandlers.forEach((handler) => {\n handler({tab: eventTab, currentTabId: diplodocId});\n });\n }\n\n private getTabsType(element: HTMLElement) {\n const tabsRoot = element.closest(`[${TAB_DATA_VARIANT}]`) as HTMLElement | undefined;\n\n if (!tabsRoot) {\n return undefined;\n }\n\n return tabsRoot.dataset.diplodocVariant;\n }\n\n private isValidTabElement(element: HTMLElement) {\n return Boolean(this.getTabsType(element));\n }\n\n private isElementDropdownSelect(target: HTMLElement) {\n return target.classList.contains(TABS_DROPDOWN_SELECT);\n }\n\n private getTabDataFromHTMLElement(target: HTMLElement): Tab | null {\n const type = this.getTabsType(target);\n\n if (type === TabsVariants.Radio) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const tab = target.dataset.diplodocVerticalTab ? target : target.parentElement!;\n\n const key = tab.dataset.diplodocKey;\n const group = (tab.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key, variant: TabsVariants.Radio} : null;\n }\n\n if (type === TabsVariants.Dropdown || type === TabsVariants.Accordion) {\n const key = target.dataset.diplodocKey;\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key, variant: type} : null;\n }\n\n const key = target.dataset.diplodocKey;\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key, variant: TabsVariants.Regular} : null;\n }\n\n private getTabs(target: HTMLElement): {tabs: Tab[]; nodes: NodeListOf<HTMLElement>} {\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n const nodes = (\n target.closest(Selector.TAB_LIST) as HTMLElement\n )?.querySelectorAll<HTMLElement>(Selector.TAB);\n\n const tabs: Tab[] = [];\n nodes.forEach((tabEl) => {\n const key = tabEl?.dataset.diplodocKey;\n if (!key) {\n return;\n }\n\n /** horizontal-only supported feature (used in left/right button click) */\n tabs.push({\n group,\n key,\n variant: TabsVariants.Regular,\n });\n });\n\n return {tabs, nodes};\n }\n}\n", "import {GLOBAL_SYMBOL} from '../common';\n\nimport {TabsController} from './TabsController';\nimport './scss/tabs.scss';\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined' && !window[GLOBAL_SYMBOL]) {\n window[GLOBAL_SYMBOL] = new TabsController(document);\n}\n"],
5
- "mappings": "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",
6
- "names": ["TABS_CLASSNAME", "TAB_CLASSNAME", "TAB_PANEL_CLASSNAME", "TABS_LIST_CLASSNAME", "ACTIVE_CLASSNAME", "GROUP_DATA_KEY", "TAB_DATA_KEY", "TAB_DATA_VARIANT", "TAB_DATA_ID", "DEFAULT_TABS_GROUP_PREFIX", "TAB_FORCED_OPEN", "TABS_DROPDOWN_SELECT", "TABS_RADIO_CLASSNAME", "TabsVariants", "GLOBAL_SYMBOL", "getEventTarget", "event", "path", "isCustom", "target", "getClosestScrollableParent", "element", "getOffsetByScrollableParent", "scrollableParent", "elementBounds", "scrollableParentBounds", "Selector", "TABS_CLASSNAME", "TABS_LIST_CLASSNAME", "TAB_CLASSNAME", "TAB_PANEL_CLASSNAME", "TABS_RADIO_CLASSNAME", "TabsController", "document", "options", "event", "target", "getEventTarget", "isCustom", "ACTIVE_CLASSNAME", "tab", "direction", "tabs", "nodes", "currentTab", "currentTabIndex", "key", "newIndex", "handler", "id", "TAB_DATA_ID", "tabsHistory", "group", "fields", "urlParams", "config", "splitConfig", "variant", "TabsVariants", "keyWithSpaces", "tabsArray", "newUrl", "groups", "GROUP_DATA_KEY", "targetTab", "scrollableParent", "getClosestScrollableParent", "previousTargetOffset", "getOffsetByScrollableParent", "isForced", "root", "singleTabSelector", "TAB_FORCED_OPEN", "TAB_DATA_KEY", "updated", "elements", "i", "title", "content", "input", "element", "htmlElem", "tabList", "tabsContainer", "allTabs", "allPanels", "node", "targetIndex", "panel", "isTargetTab", "changed", "dropdown", "TAB_DATA_VARIANT", "select", "menu", "changedIndex", "item", "menuItem", "accordion", "rect", "viewHeight", "targetOffset", "topDelta", "leftDelta", "scrollTopDelta", "scrollLeftDelta", "diplodocId", "align", "eventTab", "DEFAULT_TABS_GROUP_PREFIX", "tabsRoot", "TABS_DROPDOWN_SELECT", "_a", "_b", "_c", "type", "tabEl", "GLOBAL_SYMBOL", "TabsController"]
4
+ "sourcesContent": ["import {type TabsController} from './runtime/TabsController';\n\nexport const TAB_RE = /`?{% list tabs .*?%}`?/;\nexport const TABS_CLASSNAME = 'yfm-tabs';\nexport const TAB_CLASSNAME = 'yfm-tab';\nexport const TAB_PANEL_CLASSNAME = 'yfm-tab-panel';\nexport const TABS_LIST_CLASSNAME = 'yfm-tab-list';\nexport const ACTIVE_CLASSNAME = 'active';\nexport const TAB_GROUP_CLASSNAME = 'yfm-tab-group';\nexport const TAB_ACTIVE_KEY = 'data-diplodoc-is-active';\nexport const GROUP_DATA_KEY = 'data-diplodoc-group';\nexport const TAB_DATA_KEY = 'data-diplodoc-key';\nexport const TAB_DATA_VARIANT = 'data-diplodoc-variant';\nexport const TAB_DATA_ID = 'data-diplodoc-id';\nexport const DEFAULT_TABS_GROUP_PREFIX = 'defaultTabsGroup-';\nexport const ACTIVE_TAB_TEXT = '{selected}';\nexport const TAB_FORCED_OPEN = 'data-diplodoc-forced';\n\nexport const TABS_DROPDOWN_CLASSNAME = 'yfm-tabs-dropdown';\nexport const TABS_DROPDOWN_MENU_CLASSNAME = 'yfm-tabs-dropdown-menu';\nexport const TABS_DROPDOWN_SELECT = 'yfm-tabs-dropdown-select';\n\nexport const TABS_ACCORDION_CLASSNAME = 'yfm-tabs-accordion';\nexport const TABS_ACCORDION_CLIENT_HEIGHT = 'data-yfm-tabs-accordion-client-heights';\n\nexport const TABS_RADIO_CLASSNAME = 'yfm-tabs-vertical';\nexport const VERTICAL_TAB_CLASSNAME = 'yfm-vertical-tab';\nexport const TAB_DATA_VERTICAL_TAB = 'data-diplodoc-vertical-tab';\nexport const TAB_RADIO_KEY = 'data-diplodoc-input';\n\nexport enum TabsVariants {\n Regular = 'regular',\n Radio = 'radio',\n Dropdown = 'dropdown',\n Accordion = 'accordion',\n}\n\nexport type EnabledVariants = Partial<Record<TabsVariants, boolean>>;\n\nexport interface Tab {\n group?: string;\n key: string;\n variant: TabsVariants;\n}\n\nexport interface SelectedTabEvent {\n tab: Tab;\n currentTabId?: string;\n}\n\nexport const GLOBAL_SYMBOL: unique symbol = Symbol.for('diplodocTabs');\n\ndeclare global {\n interface Window {\n [GLOBAL_SYMBOL]: TabsController;\n }\n}\n", "export const getEventTarget = (event: Event) => {\n const path = event.composedPath();\n return Array.isArray(path) && path.length > 0 ? path[0] : event.target;\n};\n\nexport const isCustom = (event: Event) => {\n const target = getEventTarget(event);\n return !target || !(target as HTMLElement).matches;\n};\n\nexport const getClosestScrollableParent = (element: HTMLElement): HTMLElement | undefined => {\n if (Math.abs(element.scrollHeight - element.clientHeight) > 1) {\n return element;\n }\n\n return element.parentElement ? getClosestScrollableParent(element.parentElement) : undefined;\n};\n\nexport interface ElementOffset {\n top: number;\n left: number;\n scrollTop: number;\n scrollLeft: number;\n}\n\nexport const getOffsetByScrollableParent = (\n element: HTMLElement,\n scrollableParent: HTMLElement,\n): ElementOffset => {\n const elementBounds = element.getBoundingClientRect();\n const scrollableParentBounds = scrollableParent.getBoundingClientRect();\n return {\n top: elementBounds.top - scrollableParentBounds.top,\n left: elementBounds.left - scrollableParentBounds.left,\n scrollTop: scrollableParent.scrollTop,\n scrollLeft: scrollableParent.scrollLeft,\n };\n};\n", "import {\n ACTIVE_CLASSNAME,\n DEFAULT_TABS_GROUP_PREFIX,\n GROUP_DATA_KEY,\n SelectedTabEvent,\n TABS_CLASSNAME,\n TABS_DROPDOWN_SELECT,\n TABS_LIST_CLASSNAME,\n TABS_RADIO_CLASSNAME,\n TAB_CLASSNAME,\n TAB_DATA_ID,\n TAB_DATA_KEY,\n TAB_DATA_VARIANT,\n TAB_FORCED_OPEN,\n TAB_PANEL_CLASSNAME,\n Tab,\n TabsVariants,\n} from '../common';\n\nimport {\n ElementOffset,\n getClosestScrollableParent,\n getEventTarget,\n getOffsetByScrollableParent,\n isCustom,\n} from './utils';\n\nconst Selector = {\n TABS: `.${TABS_CLASSNAME}`,\n TAB_LIST: `.${TABS_LIST_CLASSNAME}`,\n TAB: `.${TAB_CLASSNAME}`,\n TAB_PANEL: `.${TAB_PANEL_CLASSNAME}`,\n VERTICAL_TABS: `.${TABS_RADIO_CLASSNAME}`,\n};\n\nexport interface ISelectTabByIdOptions {\n scrollToElement: boolean;\n}\n\ntype Handler = (data: SelectedTabEvent) => void;\n\ntype TabSwitchDirection = 'left' | 'right';\n\nexport type TabsHistory = Record<string, {key: string; variant: TabsVariants}>;\n\nexport type TabsControllerOptions = {\n saveTabsToLocalStorage: boolean;\n saveTabsToQueryStateMode: 'all' | 'page' | 'none';\n};\n\nexport class TabsController {\n private _document: Document;\n private _onSelectTabHandlers: Set<Handler> = new Set();\n private _options: TabsControllerOptions;\n private _currentPageTabGroups: string[] = [];\n private _isRestoringTabs = false;\n\n // TODO: remove side effects from constructor\n constructor(document: Document, options: Partial<TabsControllerOptions> = {}) {\n this._document = document;\n this._options = Object.assign(\n {\n saveTabsToLocalStorage: false,\n saveTabsToQueryStateMode: 'none',\n },\n options,\n );\n\n this._document.addEventListener('click', (event) => {\n const target = getEventTarget(event) as HTMLElement;\n\n if (event.target) {\n this.hideAllDropdown(event.target as HTMLElement);\n }\n\n if (isCustom(event)) {\n return;\n }\n\n if (this.isElementDropdownSelect(target)) {\n target.classList.toggle(ACTIVE_CLASSNAME);\n\n return;\n }\n\n if (!this.isValidTabElement(target)) {\n return;\n }\n\n const tab = this.getTabDataFromHTMLElement(target);\n\n if (tab) {\n this._selectTab(tab, target);\n }\n });\n\n this._document.addEventListener('keydown', (event) => {\n let direction: TabSwitchDirection | null = null;\n switch (event.key) {\n case 'ArrowLeft': {\n direction = 'left';\n break;\n }\n case 'ArrowRight': {\n direction = 'right';\n break;\n }\n case 'ArrowUp': {\n direction = 'left';\n break;\n }\n case 'ArrowDown': {\n direction = 'right';\n break;\n }\n }\n if (!direction) {\n return;\n }\n\n const target = getEventTarget(event) as HTMLElement;\n\n if (isCustom(event) || !this.isValidTabElement(target)) {\n return;\n }\n\n const {tabs, nodes} = this.getTabs(target);\n const currentTab = this.getTabDataFromHTMLElement(target);\n const currentTabIndex = tabs.findIndex(\n ({key}) => currentTab?.key && key === currentTab.key,\n );\n if (!currentTab || tabs.length <= 1 || currentTabIndex === -1) {\n return;\n }\n\n const newIndex =\n (currentTabIndex + (direction === 'left' ? -1 : 1) + tabs.length) % tabs.length;\n\n this.selectTab(tabs[newIndex]);\n nodes[newIndex].focus();\n });\n }\n\n configure(options: Partial<TabsControllerOptions>) {\n this._options = Object.assign(this._options, options);\n }\n\n onSelectTab(handler: Handler) {\n this._onSelectTabHandlers.add(handler);\n\n return () => {\n this._onSelectTabHandlers.delete(handler);\n };\n }\n\n selectTabById(id: string, options?: ISelectTabByIdOptions) {\n const target = this._document.querySelector(\n `${Selector.TAB}[${TAB_DATA_ID}=\"${id}\"]`,\n ) as HTMLElement;\n\n if (!target || !this.isValidTabElement(target)) {\n return;\n }\n\n const tab = this.getTabDataFromHTMLElement(target);\n\n if (tab) {\n this._selectTab(tab, target);\n }\n\n if (options?.scrollToElement) {\n target.scrollIntoView();\n }\n }\n\n selectTab(tab: Tab) {\n this._selectTab(tab);\n }\n\n restoreTabs(tabsHistory: TabsHistory) {\n this._isRestoringTabs = true;\n try {\n for (const [group, fields] of Object.entries(tabsHistory)) {\n if (group) {\n const tab = {group, ...fields};\n this.selectTab(tab);\n }\n }\n } finally {\n this._isRestoringTabs = false;\n }\n }\n\n getTabsFromLocalStorage(): TabsHistory {\n return JSON.parse(localStorage.getItem('tabsHistory') || '{}') as TabsHistory;\n }\n\n getTabsFromSearchQuery(): TabsHistory {\n const tabsHistory = {} as TabsHistory;\n const urlParams = new URLSearchParams(window.location.search);\n if (urlParams.has('tabs')) {\n const tabsFromQuery = urlParams.get('tabs') || '';\n const tabConfigs = tabsFromQuery.split(',');\n\n tabConfigs.forEach((config) => {\n const splitConfig = config.split('_');\n const [group, key] = splitConfig;\n let variant = TabsVariants.Regular;\n if (splitConfig.length === 3) {\n variant = splitConfig[2] as TabsVariants;\n }\n\n if (group && key && Object.values(TabsVariants).includes(variant)) {\n const keyWithSpaces = key;\n tabsHistory[group] = {key: keyWithSpaces, variant: variant};\n }\n });\n }\n\n return tabsHistory;\n }\n\n updateLocalStorageWithTabs(tabsHistory: TabsHistory) {\n if (!this._options.saveTabsToLocalStorage) {\n return;\n }\n\n // Don't update localStorage if we're just restoring tabs\n if (this._isRestoringTabs) {\n return;\n }\n\n localStorage.setItem('tabsHistory', JSON.stringify(tabsHistory));\n }\n\n updateQueryParamWithTabs(tabsHistory: TabsHistory) {\n // Don't update URL if we're just restoring tabs\n if (this._isRestoringTabs) {\n return;\n }\n\n const urlParams = new URLSearchParams(window.location.search);\n const tabsArray = Object.entries(tabsHistory).map(([group, {key, variant}]) => {\n if (variant === TabsVariants.Regular) {\n return `${group}_${key}`;\n }\n return `${group}_${key}_${variant}`;\n });\n\n // Clear or set tabs parameter\n if (tabsArray.length > 0) {\n urlParams.set('tabs', tabsArray.join(','));\n } else {\n urlParams.delete('tabs');\n }\n\n // Preserve existing state\n const currentState = history.state || {};\n\n // Use URL constructor for proper URL handling\n const url = new URL(window.location.href);\n url.search = urlParams.toString();\n\n window.history.replaceState({...currentState}, document.title, url.href);\n }\n\n getCurrentPageTabHistory(tabsHistory: TabsHistory) {\n return Object.fromEntries(\n Object.entries(tabsHistory).filter(([group]) =>\n this._currentPageTabGroups.includes(group),\n ),\n );\n }\n\n onPageChanged() {\n this._currentPageTabGroups = this.getCurrentPageTabGroups();\n }\n\n getCurrentPageTabGroups(): string[] {\n const tabs = this._document.getElementsByClassName(TABS_CLASSNAME);\n const groups = new Set<string>();\n\n Array.from(tabs).forEach((tab) => {\n const group = tab.getAttribute(GROUP_DATA_KEY);\n if (group) {\n groups.add(group);\n }\n });\n\n return Array.from(groups);\n }\n\n clearTabsPreferred() {\n localStorage.removeItem('tabsHistory');\n this.updateQueryParamWithTabs({});\n }\n\n private _selectTab(tab: Tab, targetTab?: HTMLElement) {\n const {group, key, variant} = tab;\n\n if (!group) {\n return;\n }\n\n this.saveTabPreferred({group, key, variant});\n\n const scrollableParent = targetTab && getClosestScrollableParent(targetTab);\n const previousTargetOffset =\n scrollableParent && getOffsetByScrollableParent(targetTab, scrollableParent);\n\n const updatedTabs = this.updateHTML({group, key, variant}, targetTab, variant);\n\n if (updatedTabs > 0) {\n this.fireSelectTabEvent({group, key, variant}, targetTab?.dataset.diplodocId);\n\n if (previousTargetOffset) {\n this.resetScroll(targetTab, scrollableParent, previousTargetOffset);\n }\n }\n }\n\n private updateHTML(tab: Required<Tab>, target: HTMLElement | undefined, variant: TabsVariants) {\n switch (variant) {\n case TabsVariants.Radio: {\n return this.updateHTMLRadio(tab, target);\n }\n case TabsVariants.Accordion: {\n return this.updateHTMLAccordion(tab, target);\n }\n case TabsVariants.Regular: {\n return this.updateHTMLRegular(tab);\n }\n case TabsVariants.Dropdown: {\n return this.updateHTMLDropdown(tab);\n }\n default: {\n return 0;\n }\n }\n }\n\n private saveTabPreferred(tab: Required<Tab>) {\n let tabsHistory = {} as TabsHistory;\n\n if (this._options.saveTabsToLocalStorage) {\n tabsHistory = JSON.parse(localStorage.getItem('tabsHistory') || '{}');\n }\n\n tabsHistory[tab.group] = {key: tab.key, variant: tab.variant};\n\n if (this._options.saveTabsToLocalStorage) {\n this.updateLocalStorageWithTabs(tabsHistory);\n }\n\n switch (this._options.saveTabsToQueryStateMode) {\n case 'all': {\n this.updateQueryParamWithTabs(tabsHistory);\n break;\n }\n case 'page': {\n this.updateQueryParamWithTabs(this.getCurrentPageTabHistory(tabsHistory));\n break;\n }\n }\n }\n\n private updateHTMLRadio(tab: Required<Tab>, target: HTMLElement | undefined) {\n const {group, key} = tab;\n\n const {isForced, root} = this.didTabOpenForce(target);\n\n const singleTabSelector = isForced ? `.yfm-vertical-tab[${TAB_FORCED_OPEN}=\"true\"]` : '';\n\n const tabs = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]${singleTabSelector}`,\n );\n\n if (isForced) {\n root?.removeAttribute(TAB_FORCED_OPEN);\n }\n\n let updated = 0;\n\n tabs.forEach((tab) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const root = tab.parentNode!;\n const elements = root.children;\n\n for (let i = 0; i < elements.length; i += 2) {\n const [title, content] = [elements.item(i), elements.item(i + 1)] as HTMLElement[];\n\n const input = title.children.item(0) as HTMLInputElement;\n\n if (title === tab) {\n const checked = input.checked;\n\n if (checked) {\n title.classList.remove('active');\n content?.classList.remove('active');\n\n input.removeAttribute('checked');\n } else {\n title.classList.add('active');\n content?.classList.add('active');\n\n input.setAttribute('checked', 'true');\n }\n\n continue;\n }\n\n if (input.hasAttribute('checked')) {\n title.classList.remove('active');\n content?.classList.remove('active');\n\n input.removeAttribute('checked');\n }\n\n updated++;\n }\n });\n\n return updated;\n }\n\n private updateHTMLRegular(tab: Required<Tab>) {\n const {group, key} = tab;\n\n const tabs = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let updated = 0;\n\n tabs.forEach((element) => {\n const htmlElem = element as HTMLElement;\n if (!this.isValidTabElement(htmlElem) || htmlElem.dataset.diplodocIsActive === 'true') {\n return;\n }\n\n updated++;\n\n const tab = element;\n const tabList = tab.parentNode;\n const tabsContainer = tabList?.parentNode;\n const allTabs = Array.from(tabList?.querySelectorAll(Selector.TAB) || []);\n const allPanels = Array.from(tabsContainer?.children || []).filter((node) =>\n node.classList.contains(TAB_PANEL_CLASSNAME),\n );\n const targetIndex = allTabs.indexOf(tab);\n\n allTabs.forEach((tab, i) => {\n const panel = allPanels[i];\n const isTargetTab = i === targetIndex;\n const htmlElem = tab as HTMLElement;\n\n htmlElem.dataset.diplodocIsActive = isTargetTab ? 'true' : 'false';\n\n tab.classList.toggle(ACTIVE_CLASSNAME, isTargetTab);\n tab.setAttribute('aria-selected', isTargetTab.toString());\n tab.setAttribute('tabindex', isTargetTab ? '0' : '-1');\n panel.classList.toggle(ACTIVE_CLASSNAME, isTargetTab);\n });\n });\n\n return updated;\n }\n\n private updateHTMLDropdown(tab: Required<Tab>) {\n const {group, key} = tab;\n\n const tabs = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let changed = 0;\n\n tabs.forEach((tab) => {\n const dropdown = tab.closest(`[${TAB_DATA_VARIANT}=${TabsVariants.Dropdown}]`);\n\n if (!dropdown?.children) {\n return;\n }\n\n const select = dropdown.children.item(0) as HTMLElement;\n const menu = dropdown.children.item(1);\n\n select?.classList.remove(ACTIVE_CLASSNAME);\n\n /* first and second elements are select / menu, skipping them */\n const changedIndex = Array.from(menu?.children || []).indexOf(tab) + 2;\n\n for (let i = 2; i < dropdown.children.length; i++) {\n const item = dropdown.children.item(i) as HTMLElement;\n const menuItem = menu?.children.item(i - 2) as HTMLElement;\n\n changed++;\n\n if (changedIndex === i) {\n item?.classList.add(ACTIVE_CLASSNAME);\n menuItem.classList.add(ACTIVE_CLASSNAME);\n\n select.innerHTML = tab.innerHTML;\n select.classList.add('filled');\n\n continue;\n }\n\n menuItem.classList.remove(ACTIVE_CLASSNAME);\n item.classList.remove(ACTIVE_CLASSNAME);\n }\n });\n\n return changed;\n }\n\n private updateHTMLAccordion(tab: Required<Tab>, target: HTMLElement | undefined) {\n const {group, key} = tab;\n\n const tabs = this._document.querySelectorAll(\n `${Selector.TABS}[${GROUP_DATA_KEY}=\"${group}\"] ${Selector.TAB}[${TAB_DATA_KEY}=\"${key}\"]`,\n );\n\n let changed = 0;\n\n tabs.forEach((tab) => {\n const accordion = tab.closest(`[${TAB_DATA_VARIANT}=${TabsVariants.Accordion}]`);\n\n if (!accordion?.children) {\n return;\n }\n\n for (let i = 0; i < accordion.children.length; i += 2) {\n const title = accordion.children.item(i);\n const currentTab = accordion.children.item(i + 1);\n\n changed++;\n\n if (tab === title) {\n title?.classList.toggle(ACTIVE_CLASSNAME);\n currentTab?.classList.toggle(ACTIVE_CLASSNAME);\n\n continue;\n }\n\n title?.classList.remove(ACTIVE_CLASSNAME);\n currentTab?.classList.remove(ACTIVE_CLASSNAME);\n }\n });\n\n if (target && !this.checkVisible(target)) {\n setTimeout(() => {\n target.scrollIntoView({block: 'nearest'});\n });\n }\n\n return changed;\n }\n\n private checkVisible(element: HTMLElement) {\n const rect = element.getBoundingClientRect();\n const viewHeight = Math.max(document.documentElement.clientHeight, window.innerHeight);\n\n return !(rect.bottom < 0 || rect.top - viewHeight >= 0);\n }\n\n private hideAllDropdown(target: HTMLElement) {\n const dropdowns = this._document.querySelectorAll('.yfm-tabs-dropdown-select.active');\n\n dropdowns.forEach((menu) => {\n if (!menu.contains(target)) {\n menu.classList.remove(ACTIVE_CLASSNAME);\n }\n });\n }\n\n private resetScroll(\n target: HTMLElement,\n scrollableParent: HTMLElement,\n previousTargetOffset: ElementOffset,\n ) {\n const targetOffset = getOffsetByScrollableParent(target, scrollableParent);\n const topDelta = targetOffset.top - previousTargetOffset.top;\n const leftDelta = targetOffset.left - previousTargetOffset.left;\n const scrollTopDelta = targetOffset.scrollTop - previousTargetOffset.scrollTop;\n const scrollLeftDelta = targetOffset.scrollLeft - previousTargetOffset.scrollLeft;\n scrollableParent.scrollTo(\n scrollableParent.scrollLeft + leftDelta - scrollLeftDelta,\n scrollableParent.scrollTop + topDelta - scrollTopDelta,\n );\n }\n\n private didTabOpenForce(target?: HTMLElement) {\n if (!target) {\n return {};\n }\n\n if (target.dataset.diplodocForced) {\n return {root: target, isForced: true};\n }\n\n const root = target.dataset.diplodocVerticalTab ? target : target.parentElement;\n\n const isForced = typeof root?.dataset.diplodocForced !== 'undefined';\n\n return {root, isForced};\n }\n\n private fireSelectTabEvent(tab: Required<Tab>, diplodocId?: string) {\n const {group, key, variant: align} = tab;\n\n const eventTab: Tab = group.startsWith(DEFAULT_TABS_GROUP_PREFIX)\n ? {key, variant: align}\n : tab;\n\n this._onSelectTabHandlers.forEach((handler) => {\n handler({tab: eventTab, currentTabId: diplodocId});\n });\n }\n\n private getTabsType(element: HTMLElement) {\n const tabsRoot = element.closest(`[${TAB_DATA_VARIANT}]`) as HTMLElement | undefined;\n\n if (!tabsRoot) {\n return undefined;\n }\n\n return tabsRoot.dataset.diplodocVariant;\n }\n\n private isValidTabElement(element: HTMLElement) {\n return Boolean(this.getTabsType(element));\n }\n\n private isElementDropdownSelect(target: HTMLElement) {\n return target.classList.contains(TABS_DROPDOWN_SELECT);\n }\n\n private getTabDataFromHTMLElement(target: HTMLElement): Tab | null {\n const type = this.getTabsType(target);\n\n if (type === TabsVariants.Radio) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const tab = target.dataset.diplodocVerticalTab ? target : target.parentElement!;\n\n const key = tab.dataset.diplodocKey;\n const group = (tab.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key, variant: TabsVariants.Radio} : null;\n }\n\n if (type === TabsVariants.Dropdown || type === TabsVariants.Accordion) {\n const key = target.dataset.diplodocKey;\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key, variant: type} : null;\n }\n\n const key = target.dataset.diplodocKey;\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n return key && group ? {group, key, variant: TabsVariants.Regular} : null;\n }\n\n private getTabs(target: HTMLElement): {tabs: Tab[]; nodes: NodeListOf<HTMLElement>} {\n const group = (target.closest(Selector.TABS) as HTMLElement)?.dataset.diplodocGroup;\n const nodes = (\n target.closest(Selector.TAB_LIST) as HTMLElement\n )?.querySelectorAll<HTMLElement>(Selector.TAB);\n\n const tabs: Tab[] = [];\n nodes.forEach((tabEl) => {\n const key = tabEl?.dataset.diplodocKey;\n if (!key) {\n return;\n }\n\n /** horizontal-only supported feature (used in left/right button click) */\n tabs.push({\n group,\n key,\n variant: TabsVariants.Regular,\n });\n });\n\n return {tabs, nodes};\n }\n}\n", "import {GLOBAL_SYMBOL} from '../common';\n\nimport {TabsController} from './TabsController';\nimport './scss/tabs.scss';\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined' && !window[GLOBAL_SYMBOL]) {\n window[GLOBAL_SYMBOL] = new TabsController(document);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["TABS_CLASSNAME", "TAB_CLASSNAME", "TAB_PANEL_CLASSNAME", "TABS_LIST_CLASSNAME", "ACTIVE_CLASSNAME", "GROUP_DATA_KEY", "TAB_DATA_KEY", "TAB_DATA_VARIANT", "TAB_DATA_ID", "DEFAULT_TABS_GROUP_PREFIX", "TAB_FORCED_OPEN", "TABS_DROPDOWN_SELECT", "TABS_RADIO_CLASSNAME", "TabsVariants", "GLOBAL_SYMBOL", "getEventTarget", "event", "path", "isCustom", "target", "getClosestScrollableParent", "element", "getOffsetByScrollableParent", "scrollableParent", "elementBounds", "scrollableParentBounds", "Selector", "TABS_CLASSNAME", "TABS_LIST_CLASSNAME", "TAB_CLASSNAME", "TAB_PANEL_CLASSNAME", "TABS_RADIO_CLASSNAME", "TabsController", "document", "options", "event", "target", "getEventTarget", "isCustom", "ACTIVE_CLASSNAME", "tab", "direction", "tabs", "nodes", "currentTab", "currentTabIndex", "key", "newIndex", "handler", "id", "TAB_DATA_ID", "tabsHistory", "group", "fields", "urlParams", "config", "splitConfig", "variant", "TabsVariants", "keyWithSpaces", "tabsArray", "currentState", "url", "groups", "GROUP_DATA_KEY", "targetTab", "scrollableParent", "getClosestScrollableParent", "previousTargetOffset", "getOffsetByScrollableParent", "isForced", "root", "singleTabSelector", "TAB_FORCED_OPEN", "TAB_DATA_KEY", "updated", "elements", "i", "title", "content", "input", "element", "htmlElem", "tabList", "tabsContainer", "allTabs", "allPanels", "node", "targetIndex", "panel", "isTargetTab", "changed", "dropdown", "TAB_DATA_VARIANT", "select", "menu", "changedIndex", "item", "menuItem", "accordion", "rect", "viewHeight", "targetOffset", "topDelta", "leftDelta", "scrollTopDelta", "scrollLeftDelta", "diplodocId", "align", "eventTab", "DEFAULT_TABS_GROUP_PREFIX", "tabsRoot", "TABS_DROPDOWN_SELECT", "_a", "_b", "_c", "type", "tabEl", "GLOBAL_SYMBOL", "TabsController"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diplodoc/tabs-extension",
3
- "version": "3.7.1",
3
+ "version": "3.7.3",
4
4
  "description": "Tabs plugin for Diplodoc transformer and builder",
5
5
  "main": "build/plugin/index.js",
6
6
  "types": "build/plugin/index.d.ts",