@plasmicpkgs/antd5 0.0.136 → 0.0.139

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.
Files changed (45) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/antd.esm.js +7145 -6821
  3. package/dist/antd.esm.js.map +1 -1
  4. package/dist/index.d.ts +1 -3
  5. package/dist/index.js +7144 -6820
  6. package/dist/index.js.map +1 -1
  7. package/dist/react-utils.d.ts +2 -1
  8. package/dist/registerConfigProvider.d.ts +7 -1
  9. package/dist/registerForm.d.ts +2 -2
  10. package/dist/registerSegmented.d.ts +20 -0
  11. package/dist/registerTabs.d.ts +2 -6
  12. package/package.json +6 -6
  13. package/skinny/react-utils-11b0221a.cjs.js +121 -0
  14. package/skinny/react-utils-11b0221a.cjs.js.map +1 -0
  15. package/skinny/react-utils-79d444f6.esm.js +112 -0
  16. package/skinny/react-utils-79d444f6.esm.js.map +1 -0
  17. package/skinny/react-utils.d.ts +2 -1
  18. package/skinny/registerCollapse.cjs.js +4 -4
  19. package/skinny/registerCollapse.cjs.js.map +1 -1
  20. package/skinny/registerCollapse.esm.js +3 -3
  21. package/skinny/registerCollapse.esm.js.map +1 -1
  22. package/skinny/registerConfigProvider.cjs.js +44 -13
  23. package/skinny/registerConfigProvider.cjs.js.map +1 -1
  24. package/skinny/registerConfigProvider.d.ts +7 -1
  25. package/skinny/registerConfigProvider.esm.js +45 -14
  26. package/skinny/registerConfigProvider.esm.js.map +1 -1
  27. package/skinny/registerForm.cjs.js +10 -7
  28. package/skinny/registerForm.cjs.js.map +1 -1
  29. package/skinny/registerForm.d.ts +2 -2
  30. package/skinny/registerForm.esm.js +8 -5
  31. package/skinny/registerForm.esm.js.map +1 -1
  32. package/skinny/registerSegmented.cjs.js +314 -0
  33. package/skinny/registerSegmented.cjs.js.map +1 -0
  34. package/skinny/registerSegmented.d.ts +20 -0
  35. package/skinny/registerSegmented.esm.js +304 -0
  36. package/skinny/registerSegmented.esm.js.map +1 -0
  37. package/skinny/registerSelect.cjs.js +372 -11
  38. package/skinny/registerSelect.cjs.js.map +1 -1
  39. package/skinny/registerSelect.esm.js +365 -4
  40. package/skinny/registerSelect.esm.js.map +1 -1
  41. package/skinny/registerTabs.cjs.js +21 -36
  42. package/skinny/registerTabs.cjs.js.map +1 -1
  43. package/skinny/registerTabs.d.ts +2 -6
  44. package/skinny/registerTabs.esm.js +21 -36
  45. package/skinny/registerTabs.esm.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"registerTabs.cjs.js","sources":["../src/registerTabs.tsx"],"sourcesContent":["import { Button, Tabs } from \"antd\";\nimport React, { useMemo } from \"react\";\nimport {\n Registerable,\n registerComponentHelper,\n traverseReactEltTree,\n} from \"./utils\";\nimport { ActionProps } from \"@plasmicapp/host/registerComponent\";\n\nexport const tabsComponentName = \"plasmic-antd5-tabs\";\nexport const tabItemComponentName = \"plasmic-antd5-tab-item\";\n\ntype TabItemType = NonNullable<\n React.ComponentProps<typeof Tabs>[\"items\"]\n>[number];\n\nexport const AntdTabItem: React.FC<TabItemType> = ({ children }) => {\n return <div>{children}</div>;\n};\n\nfunction getTabItems(\n items:\n | { props: { children: React.ReactElement<TabItemType>[] } }\n | React.ReactElement<TabItemType>\n): React.ReactElement<TabItemType>[] {\n if ((items as React.ReactElement<TabItemType>)?.type === AntdTabItem) {\n return [items as React.ReactElement<TabItemType>];\n }\n if (Array.isArray(items?.props?.children)) {\n return items.props.children.filter((item) => item.type === AntdTabItem);\n }\n return [];\n}\n\ntype TabsProps = Omit<\n React.ComponentProps<typeof Tabs>,\n \"items\" | \"animated\" | \"tabBarExtraContent\" | \"renderTabBar\"\n> & {\n items:\n | { props: { children: React.ReactElement<TabItemType>[] } }\n | React.ReactElement<TabItemType>;\n animated: boolean;\n animateTabBar: boolean;\n animateTabContent: boolean;\n tabBarExtraContentLeft: React.ReactNode;\n tabBarExtraContentRight: React.ReactNode;\n sticky: boolean;\n stickyOffset: number;\n tabBarBackground: string;\n tabsScopeClassName?: string;\n tabsDropdownScopeClassName?: string;\n};\n\nexport function AntdTabs(props: TabsProps) {\n const {\n items: itemsRaw,\n animated,\n animateTabBar,\n animateTabContent,\n tabBarExtraContentLeft,\n tabBarExtraContentRight,\n sticky,\n stickyOffset,\n tabBarBackground,\n className,\n tabPosition,\n tabsScopeClassName,\n tabsDropdownScopeClassName,\n ...rest\n } = props;\n const animationProp: React.ComponentProps<typeof Tabs>[\"animated\"] = useMemo(\n () =>\n animated\n ? {\n inkBar: animateTabBar,\n tabPane: animateTabContent,\n }\n : false,\n [animateTabBar, animateTabContent, animated]\n );\n const items: TabItemType[] = useMemo(() => {\n if (!React.isValidElement(itemsRaw)) return [];\n const tabItems = getTabItems(itemsRaw);\n return tabItems\n .map((currentItem) => {\n if (\n !React.isValidElement(currentItem) ||\n !React.isValidElement(currentItem.props.children)\n ) {\n return null;\n }\n\n return {\n ...currentItem.props,\n key: currentItem.key,\n children: <>{currentItem.props.children}</>,\n };\n })\n .filter((i) => i != null) as TabItemType[];\n }, [itemsRaw]);\n return (\n <Tabs\n className={`${className} ${tabsScopeClassName}`}\n popupClassName={tabsDropdownScopeClassName}\n tabBarExtraContent={{\n left: <>{tabBarExtraContentLeft}</>,\n right: <>{tabBarExtraContentRight}</>,\n }}\n tabPosition={tabPosition}\n /**\n * CAUTION: sticky tab-bars are only supported for tabPosition top.\n * In component metadata, I have specified that sticky prop is hidden when tabPosition !== \"top\".\n * however, and that's where the caution is, that does not mean that any previously set value of sticky is destroyed. It stays there, but just the prop is hidden from the Settings side menu in Plasmic Studio.\n *\n * Which is why I have to also check the tabPosition here. And that's redundant.\n */\n renderTabBar={\n sticky && tabPosition === \"top\"\n ? (props, DefaultTabBar) => (\n <div\n style={{\n zIndex: 1,\n position: \"sticky\",\n top: stickyOffset || 0,\n }}\n >\n <DefaultTabBar\n {...props}\n style={{ backgroundColor: tabBarBackground }}\n />\n </div>\n )\n : undefined\n }\n animated={animationProp}\n items={items}\n {...rest}\n />\n );\n}\n\n// function NavigateTabs({ componentProps, studioOps }: ActionProps<any>) {\n// const tabPanes: string[] = [];\n// traverseReactEltTree(getTabItems(componentProps.items), (elt) => {\n// if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n// tabPanes.push(elt.key);\n// }\n// });\n// const buttonStyle = {\n// width: \"100%\",\n// borderColor: \"#f3f3f2\",\n// borderRadius: 6,\n// fontSize: 12,\n// };\n// const activeKey = componentProps.activeKey;\n// const currTabPos = activeKey\n// ? tabPanes.findIndex((tabKey) => {\n// return tabKey === activeKey;\n// })\n// : 0;\n\n// return (\n// <div\n// style={{\n// width: \"100%\",\n// display: \"flex\",\n// flexDirection: \"row\",\n// gap: \"4px\",\n// justifyContent: \"space-between\",\n// }}\n// >\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const prevTabPos =\n// (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n// }\n// }}\n// >\n// Prev tab\n// </Button>\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const nextTabPos = (currTabPos + 1) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[nextTabPos] });\n// }\n// }}\n// >\n// Next tab\n// </Button>\n// </div>\n// );\n// }\n\nfunction OutlineMessage() {\n return <div>* To re-arrange tab panes, use the Outline panel</div>;\n}\n\nfunction getActiveKeyOptions(props: TabsProps) {\n const options = new Set<string>();\n traverseReactEltTree(getTabItems(props.items), (elt) => {\n if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n options.add(elt.key);\n }\n });\n return Array.from(options.keys());\n}\n\nexport function registerTabs(loader?: Registerable) {\n registerComponentHelper(loader, AntdTabs, {\n name: tabsComponentName,\n displayName: \"Tabs\",\n defaultStyles: {\n width: \"stretch\",\n overflow: \"scroll\",\n },\n props: {\n activeKey: {\n editOnly: true,\n displayName: \"Active tab key\",\n uncontrolledProp: \"defaultActiveKey\",\n type: \"choice\",\n description: `Initial active tab's key`,\n options: getActiveKeyOptions,\n },\n animated: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Change tabs with animation\",\n },\n animateTabBar: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Animate the tab bar when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n animateTabContent: {\n type: \"boolean\",\n defaultValue: false,\n description: \"Fade-in tab content when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n centered: {\n type: \"boolean\",\n description: \"Center-align the tab bar\",\n },\n type: {\n type: \"choice\",\n defaultValueHint: \"line\",\n options: [\"line\", \"card\"],\n description: \"Basic style of tabs\",\n },\n items: {\n type: \"slot\",\n hidePlaceholder: true,\n allowedComponents: [tabItemComponentName],\n ...({ mergeWithParent: true } as any), // to make the tab items selectable from the components outline pane in Plasmic Studio.\n defaultValue: [\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"1\",\n label: {\n type: \"text\",\n value: \"First Item\",\n },\n children: {\n type: \"text\",\n value: \"First Children\",\n },\n },\n },\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"2\",\n label: {\n type: \"text\",\n value: \"Second Item\",\n },\n children: {\n type: \"text\",\n value: \"Second Children\",\n },\n },\n },\n ],\n },\n size: {\n type: \"choice\",\n defaultValueHint: \"middle\",\n options: [\"large\", \"middle\", \"small\"],\n description: \"Preset tab bar size\",\n },\n tabBarExtraContentLeft: {\n type: \"slot\",\n displayName: \"Extra content on left side\",\n hidePlaceholder: true,\n },\n tabBarExtraContentRight: {\n type: \"slot\",\n displayName: \"Extra content on right side\",\n hidePlaceholder: true,\n },\n tabBarGutter: {\n type: \"number\",\n displayName: \"Tab gap\",\n description: \"Gap (in pixels) between tabs\",\n advanced: true,\n },\n tabPosition: {\n type: \"choice\",\n defaultValueHint: \"top\",\n options: [\"top\", \"right\", \"bottom\", \"left\"],\n description: \"Position of tabs\",\n },\n destroyInactiveTabPane: {\n type: \"boolean\",\n description: `Destroy/Unmount inactive tab pane when changing tab`,\n advanced: true,\n },\n sticky: {\n type: \"boolean\",\n advanced: true,\n description: \"Stick tab bar to the top of the page when scrolling.\",\n defaultValue: false,\n hidden: (ps) => ps.tabPosition !== \"top\",\n },\n stickyOffset: {\n type: \"number\",\n advanced: true,\n description:\n \"Distance (in pixels) between the sticky tab bar and the top of the page as you scroll.\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabBarBackground: {\n type: \"color\",\n advanced: true,\n defaultValue: \"#FFF\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabsScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabs\",\n } as any,\n tabBarClassName: {\n type: \"class\",\n displayName: \"Tab bar\",\n selectors: [\n {\n selector: \":tabs.ant-tabs .ant-tabs-nav\",\n label: \"Base\",\n },\n ],\n },\n tabsDropdownScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabsDropdown\",\n } as any,\n tabsDropdownClassName: {\n type: \"class\",\n displayName: \"Overflow tabs menu\",\n selectors: [\n {\n selector: \":tabsDropdown.ant-tabs-dropdown .ant-tabs-dropdown-menu\",\n label: \"Base\",\n },\n ],\n },\n onChange: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"activeKey\", type: \"string\" }],\n },\n onTabClick: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n { name: \"tabKey\", type: \"string\" },\n { name: \"mouseEvent\", type: \"object\" },\n ],\n },\n onTabScroll: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"scrollInfo\", type: \"object\" }],\n },\n },\n states: {\n activeKey: {\n type: \"writable\",\n valueProp: \"activeKey\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n },\n },\n actions: [\n // {\n // type: \"custom-action\",\n // control: NavigateTabs,\n // },\n {\n type: \"button-action\",\n label: \"Add new tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n // Get the first positive integer that isn't already a key\n const generateNewKey = () => {\n const keysSet = new Set<string>();\n traverseReactEltTree(getTabItems(componentProps.items), (elt) => {\n if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n keysSet.add(elt.key);\n }\n });\n\n for (\n let keyCandidate = 1;\n keyCandidate <= keysSet.size + 1;\n keyCandidate++\n ) {\n const strKey = keyCandidate.toString();\n if (!keysSet.has(strKey)) {\n return strKey;\n }\n }\n\n return undefined;\n };\n\n const tabKey = generateNewKey();\n studioOps.appendToSlot(\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: tabKey,\n label: {\n type: \"text\",\n value: `Tab Label ${tabKey}`,\n },\n children: {\n type: \"text\",\n value: `Tab Children ${tabKey}`,\n },\n },\n },\n \"items\"\n );\n studioOps.updateProps({ activeKey: tabKey });\n },\n },\n {\n type: \"button-action\",\n label: \"Delete current tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n if (componentProps.activeKey) {\n const tabPanes: string[] = [];\n traverseReactEltTree(getTabItems(componentProps.items), (elt) => {\n if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n tabPanes.push(elt!.key!);\n }\n });\n const activeKey = componentProps.activeKey;\n const currTabPos = tabPanes.findIndex((tabKey) => {\n return tabKey === activeKey;\n });\n\n if (currTabPos !== -1) {\n studioOps.removeFromSlotAt(currTabPos, \"items\");\n if (tabPanes.length - 1 > 0) {\n const prevTabPos =\n (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n }\n }\n }\n },\n },\n {\n type: \"custom-action\",\n control: OutlineMessage,\n },\n ],\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabs\",\n });\n\n registerComponentHelper(loader, AntdTabItem, {\n name: tabItemComponentName,\n displayName: \"Tab Item\",\n props: {\n disabled: {\n type: \"boolean\",\n description: \"Disable this tab\",\n },\n forceRender: {\n type: \"boolean\",\n description: `Force render of content in the tab, not lazy render after clicking on the tab`,\n advanced: true,\n },\n key: {\n type: \"string\",\n description: `Unique identifier for this tab`,\n displayName: \"Tab key\",\n },\n label: {\n type: \"slot\",\n displayName: \"Tab title\",\n defaultValue: \"Tab\",\n },\n children: {\n type: \"slot\",\n hidePlaceholder: true,\n },\n },\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabItem\",\n parentComponentName: tabsComponentName,\n });\n}\n"],"names":["React","useMemo","Tabs","props","traverseReactEltTree","registerComponentHelper"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,MAAM,iBAAoB,GAAA,qBAAA;AAC1B,MAAM,oBAAuB,GAAA,yBAAA;AAM7B,MAAM,WAAqC,GAAA,CAAC,EAAE,QAAA,EAAe,KAAA;AAClE,EAAO,uBAAAA,sBAAA,CAAA,aAAA,CAAC,aAAK,QAAS,CAAA,CAAA;AACxB,EAAA;AAEA,SAAS,YACP,KAGmC,EAAA;AAxBrC,EAAA,IAAA,EAAA,CAAA;AAyBE,EAAK,IAAA,CAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAA2C,UAAS,WAAa,EAAA;AACpE,IAAA,OAAO,CAAC,KAAwC,CAAA,CAAA;AAAA,GAClD;AACA,EAAA,IAAI,MAAM,OAAQ,CAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,KAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAc,QAAQ,CAAG,EAAA;AACzC,IAAO,OAAA,KAAA,CAAM,MAAM,QAAS,CAAA,MAAA,CAAO,CAAC,IAAS,KAAA,IAAA,CAAK,SAAS,WAAW,CAAA,CAAA;AAAA,GACxE;AACA,EAAA,OAAO,EAAC,CAAA;AACV,CAAA;AAqBO,SAAS,SAAS,KAAkB,EAAA;AACzC,EAAA,MAeI,EAdF,GAAA,KAAA,EAAA;AAAA,IAAO,KAAA,EAAA,QAAA;AAAA,IACP,QAAA;AAAA,IACA,aAAA;AAAA,IACA,iBAAA;AAAA,IACA,sBAAA;AAAA,IACA,uBAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAA;AAAA,IACA,kBAAA;AAAA,IACA,0BAAA;AAAA,GAnEJ,GAqEM,EADC,EAAA,IAAA,GAAA,SAAA,CACD,EADC,EAAA;AAAA,IAbH,OAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA;AAAA,IACA,mBAAA;AAAA,IACA,wBAAA;AAAA,IACA,yBAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,kBAAA;AAAA,IACA,WAAA;AAAA,IACA,aAAA;AAAA,IACA,oBAAA;AAAA,IACA,4BAAA;AAAA,GAAA,CAAA,CAAA;AAGF,EAAA,MAAM,aAA+D,GAAAC,aAAA;AAAA,IACnE,MACE,QACI,GAAA;AAAA,MACE,MAAQ,EAAA,aAAA;AAAA,MACR,OAAS,EAAA,iBAAA;AAAA,KAEX,GAAA,KAAA;AAAA,IACN,CAAC,aAAe,EAAA,iBAAA,EAAmB,QAAQ,CAAA;AAAA,GAC7C,CAAA;AACA,EAAM,MAAA,KAAA,GAAuBA,cAAQ,MAAM;AACzC,IAAI,IAAA,CAACD,sBAAM,CAAA,cAAA,CAAe,QAAQ,CAAA;AAAG,MAAA,OAAO,EAAC,CAAA;AAC7C,IAAM,MAAA,QAAA,GAAW,YAAY,QAAQ,CAAA,CAAA;AACrC,IAAO,OAAA,QAAA,CACJ,GAAI,CAAA,CAAC,WAAgB,KAAA;AACpB,MACE,IAAA,CAACA,sBAAM,CAAA,cAAA,CAAe,WAAW,CAAA,IACjC,CAACA,sBAAA,CAAM,cAAe,CAAA,WAAA,CAAY,KAAM,CAAA,QAAQ,CAChD,EAAA;AACA,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AAEA,MAAO,OAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACF,YAAY,KADV,CAAA,EAAA;AAAA,QAEL,KAAK,WAAY,CAAA,GAAA;AAAA,QACjB,QAAU,kBAAAA,sBAAA,CAAA,aAAA,CAAAA,sBAAA,CAAA,QAAA,EAAA,IAAA,EAAG,WAAY,CAAA,KAAA,CAAM,QAAS,CAAA;AAAA,OAC1C,CAAA,CAAA;AAAA,KACD,CACA,CAAA,MAAA,CAAO,CAAC,CAAA,KAAM,KAAK,IAAI,CAAA,CAAA;AAAA,GAC5B,EAAG,CAAC,QAAQ,CAAC,CAAA,CAAA;AACb,EACE,uBAAAA,sBAAA,CAAA,aAAA;AAAA,IAACE,SAAA;AAAA,IAAA,cAAA,CAAA;AAAA,MACC,SAAA,EAAW,GAAG,SAAa,CAAA,CAAA,EAAA,kBAAA,CAAA,CAAA;AAAA,MAC3B,cAAgB,EAAA,0BAAA;AAAA,MAChB,kBAAoB,EAAA;AAAA,QAClB,IAAA,8FAAS,sBAAuB,CAAA;AAAA,QAChC,KAAA,8FAAU,uBAAwB,CAAA;AAAA,OACpC;AAAA,MACA,WAAA;AAAA,MAQA,cACE,MAAU,IAAA,WAAA,KAAgB,KACtB,GAAA,CAACC,QAAO,aACN,qBAAAH,sBAAA,CAAA,aAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAO,EAAA;AAAA,YACL,MAAQ,EAAA,CAAA;AAAA,YACR,QAAU,EAAA,QAAA;AAAA,YACV,KAAK,YAAgB,IAAA,CAAA;AAAA,WACvB;AAAA,SAAA;AAAA,wBAEAA,sBAAA,CAAA,aAAA;AAAA,UAAC,aAAA;AAAA,UAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACKG,MADL,CAAA,EAAA;AAAA,YAEC,KAAA,EAAO,EAAE,eAAA,EAAiB,gBAAiB,EAAA;AAAA,WAAA,CAAA;AAAA,SAC7C;AAAA,OAGJ,GAAA,KAAA,CAAA;AAAA,MAEN,QAAU,EAAA,aAAA;AAAA,MACV,KAAA;AAAA,KACI,EAAA,IAAA,CAAA;AAAA,GACN,CAAA;AAEJ,CAAA;AA2DA,SAAS,cAAiB,GAAA;AACxB,EAAO,uBAAAH,sBAAA,CAAA,aAAA,CAAC,aAAI,kDAAgD,CAAA,CAAA;AAC9D,CAAA;AAEA,SAAS,oBAAoB,KAAkB,EAAA;AAC7C,EAAM,MAAA,OAAA,uBAAc,GAAY,EAAA,CAAA;AAChC,EAAAI,0BAAA,CAAqB,WAAY,CAAA,KAAA,CAAM,KAAK,CAAA,EAAG,CAAC,GAAQ,KAAA;AACtD,IAAA,IAAA,CAAI,2BAAK,IAAS,MAAA,WAAA,IAAe,QAAO,GAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAK,SAAQ,QAAU,EAAA;AAC7D,MAAQ,OAAA,CAAA,GAAA,CAAI,IAAI,GAAG,CAAA,CAAA;AAAA,KACrB;AAAA,GACD,CAAA,CAAA;AACD,EAAA,OAAO,KAAM,CAAA,IAAA,CAAK,OAAQ,CAAA,IAAA,EAAM,CAAA,CAAA;AAClC,CAAA;AAEO,SAAS,aAAa,MAAuB,EAAA;AAClD,EAAAC,6BAAA,CAAwB,QAAQ,QAAU,EAAA;AAAA,IACxC,IAAM,EAAA,iBAAA;AAAA,IACN,WAAa,EAAA,MAAA;AAAA,IACb,aAAe,EAAA;AAAA,MACb,KAAO,EAAA,SAAA;AAAA,MACP,QAAU,EAAA,QAAA;AAAA,KACZ;AAAA,IACA,KAAO,EAAA;AAAA,MACL,SAAW,EAAA;AAAA,QACT,QAAU,EAAA,IAAA;AAAA,QACV,WAAa,EAAA,gBAAA;AAAA,QACb,gBAAkB,EAAA,kBAAA;AAAA,QAClB,IAAM,EAAA,QAAA;AAAA,QACN,WAAa,EAAA,CAAA,wBAAA,CAAA;AAAA,QACb,OAAS,EAAA,mBAAA;AAAA,OACX;AAAA,MACA,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,SAAA;AAAA,QACN,YAAc,EAAA,IAAA;AAAA,QACd,WAAa,EAAA,4BAAA;AAAA,OACf;AAAA,MACA,aAAe,EAAA;AAAA,QACb,IAAM,EAAA,SAAA;AAAA,QACN,YAAc,EAAA,IAAA;AAAA,QACd,WAAa,EAAA,yCAAA;AAAA,QACb,MAAQ,EAAA,CAAC,EAAO,KAAA,CAAC,EAAG,CAAA,QAAA;AAAA,OACtB;AAAA,MACA,iBAAmB,EAAA;AAAA,QACjB,IAAM,EAAA,SAAA;AAAA,QACN,YAAc,EAAA,KAAA;AAAA,QACd,WAAa,EAAA,yCAAA;AAAA,QACb,MAAQ,EAAA,CAAC,EAAO,KAAA,CAAC,EAAG,CAAA,QAAA;AAAA,OACtB;AAAA,MACA,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,SAAA;AAAA,QACN,WAAa,EAAA,0BAAA;AAAA,OACf;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,IAAM,EAAA,QAAA;AAAA,QACN,gBAAkB,EAAA,MAAA;AAAA,QAClB,OAAA,EAAS,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,QACxB,WAAa,EAAA,qBAAA;AAAA,OACf;AAAA,MACA,KAAO,EAAA,aAAA,CAAA,cAAA,CAAA;AAAA,QACL,IAAM,EAAA,MAAA;AAAA,QACN,eAAiB,EAAA,IAAA;AAAA,QACjB,iBAAA,EAAmB,CAAC,oBAAoB,CAAA;AAAA,OACpC,EAAA,EAAE,eAAiB,EAAA,IAAA,EAJlB,CAAA,EAAA;AAAA;AAAA,QAKL,YAAc,EAAA;AAAA,UACZ;AAAA,YACE,IAAM,EAAA,WAAA;AAAA,YACN,IAAM,EAAA,oBAAA;AAAA,YACN,KAAO,EAAA;AAAA,cACL,GAAK,EAAA,GAAA;AAAA,cACL,KAAO,EAAA;AAAA,gBACL,IAAM,EAAA,MAAA;AAAA,gBACN,KAAO,EAAA,YAAA;AAAA,eACT;AAAA,cACA,QAAU,EAAA;AAAA,gBACR,IAAM,EAAA,MAAA;AAAA,gBACN,KAAO,EAAA,gBAAA;AAAA,eACT;AAAA,aACF;AAAA,WACF;AAAA,UACA;AAAA,YACE,IAAM,EAAA,WAAA;AAAA,YACN,IAAM,EAAA,oBAAA;AAAA,YACN,KAAO,EAAA;AAAA,cACL,GAAK,EAAA,GAAA;AAAA,cACL,KAAO,EAAA;AAAA,gBACL,IAAM,EAAA,MAAA;AAAA,gBACN,KAAO,EAAA,aAAA;AAAA,eACT;AAAA,cACA,QAAU,EAAA;AAAA,gBACR,IAAM,EAAA,MAAA;AAAA,gBACN,KAAO,EAAA,iBAAA;AAAA,eACT;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,OACF,CAAA;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,IAAM,EAAA,QAAA;AAAA,QACN,gBAAkB,EAAA,QAAA;AAAA,QAClB,OAAS,EAAA,CAAC,OAAS,EAAA,QAAA,EAAU,OAAO,CAAA;AAAA,QACpC,WAAa,EAAA,qBAAA;AAAA,OACf;AAAA,MACA,sBAAwB,EAAA;AAAA,QACtB,IAAM,EAAA,MAAA;AAAA,QACN,WAAa,EAAA,4BAAA;AAAA,QACb,eAAiB,EAAA,IAAA;AAAA,OACnB;AAAA,MACA,uBAAyB,EAAA;AAAA,QACvB,IAAM,EAAA,MAAA;AAAA,QACN,WAAa,EAAA,6BAAA;AAAA,QACb,eAAiB,EAAA,IAAA;AAAA,OACnB;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,IAAM,EAAA,QAAA;AAAA,QACN,WAAa,EAAA,SAAA;AAAA,QACb,WAAa,EAAA,8BAAA;AAAA,QACb,QAAU,EAAA,IAAA;AAAA,OACZ;AAAA,MACA,WAAa,EAAA;AAAA,QACX,IAAM,EAAA,QAAA;AAAA,QACN,gBAAkB,EAAA,KAAA;AAAA,QAClB,OAAS,EAAA,CAAC,KAAO,EAAA,OAAA,EAAS,UAAU,MAAM,CAAA;AAAA,QAC1C,WAAa,EAAA,kBAAA;AAAA,OACf;AAAA,MACA,sBAAwB,EAAA;AAAA,QACtB,IAAM,EAAA,SAAA;AAAA,QACN,WAAa,EAAA,CAAA,mDAAA,CAAA;AAAA,QACb,QAAU,EAAA,IAAA;AAAA,OACZ;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,IAAM,EAAA,SAAA;AAAA,QACN,QAAU,EAAA,IAAA;AAAA,QACV,WAAa,EAAA,sDAAA;AAAA,QACb,YAAc,EAAA,KAAA;AAAA,QACd,MAAQ,EAAA,CAAC,EAAO,KAAA,EAAA,CAAG,WAAgB,KAAA,KAAA;AAAA,OACrC;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,IAAM,EAAA,QAAA;AAAA,QACN,QAAU,EAAA,IAAA;AAAA,QACV,WACE,EAAA,wFAAA;AAAA,QACF,QAAQ,CAAC,EAAA,KAAO,GAAG,WAAgB,KAAA,KAAA,IAAS,CAAC,EAAG,CAAA,MAAA;AAAA,OAClD;AAAA,MACA,gBAAkB,EAAA;AAAA,QAChB,IAAM,EAAA,OAAA;AAAA,QACN,QAAU,EAAA,IAAA;AAAA,QACV,YAAc,EAAA,MAAA;AAAA,QACd,QAAQ,CAAC,EAAA,KAAO,GAAG,WAAgB,KAAA,KAAA,IAAS,CAAC,EAAG,CAAA,MAAA;AAAA,OAClD;AAAA,MACA,kBAAoB,EAAA;AAAA,QAClB,IAAM,EAAA,iBAAA;AAAA,QACN,SAAW,EAAA,MAAA;AAAA,OACb;AAAA,MACA,eAAiB,EAAA;AAAA,QACf,IAAM,EAAA,OAAA;AAAA,QACN,WAAa,EAAA,SAAA;AAAA,QACb,SAAW,EAAA;AAAA,UACT;AAAA,YACE,QAAU,EAAA,8BAAA;AAAA,YACV,KAAO,EAAA,MAAA;AAAA,WACT;AAAA,SACF;AAAA,OACF;AAAA,MACA,0BAA4B,EAAA;AAAA,QAC1B,IAAM,EAAA,iBAAA;AAAA,QACN,SAAW,EAAA,cAAA;AAAA,OACb;AAAA,MACA,qBAAuB,EAAA;AAAA,QACrB,IAAM,EAAA,OAAA;AAAA,QACN,WAAa,EAAA,oBAAA;AAAA,QACb,SAAW,EAAA;AAAA,UACT;AAAA,YACE,QAAU,EAAA,yDAAA;AAAA,YACV,KAAO,EAAA,MAAA;AAAA,WACT;AAAA,SACF;AAAA,OACF;AAAA,MACA,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,cAAA;AAAA,QACN,QAAU,EAAA,IAAA;AAAA,QACV,UAAU,CAAC,EAAE,MAAM,WAAa,EAAA,IAAA,EAAM,UAAU,CAAA;AAAA,OAClD;AAAA,MACA,UAAY,EAAA;AAAA,QACV,IAAM,EAAA,cAAA;AAAA,QACN,QAAU,EAAA,IAAA;AAAA,QACV,QAAU,EAAA;AAAA,UACR,EAAE,IAAA,EAAM,QAAU,EAAA,IAAA,EAAM,QAAS,EAAA;AAAA,UACjC,EAAE,IAAA,EAAM,YAAc,EAAA,IAAA,EAAM,QAAS,EAAA;AAAA,SACvC;AAAA,OACF;AAAA,MACA,WAAa,EAAA;AAAA,QACX,IAAM,EAAA,cAAA;AAAA,QACN,QAAU,EAAA,IAAA;AAAA,QACV,UAAU,CAAC,EAAE,MAAM,YAAc,EAAA,IAAA,EAAM,UAAU,CAAA;AAAA,OACnD;AAAA,KACF;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,SAAW,EAAA;AAAA,QACT,IAAM,EAAA,UAAA;AAAA,QACN,SAAW,EAAA,WAAA;AAAA,QACX,YAAc,EAAA,UAAA;AAAA,QACd,YAAc,EAAA,MAAA;AAAA,OAChB;AAAA,KACF;AAAA,IACA,OAAS,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAKP;AAAA,QACE,IAAM,EAAA,eAAA;AAAA,QACN,KAAO,EAAA,aAAA;AAAA,QACP,OAAS,EAAA,CAAC,EAAE,cAAA,EAAgB,WAAkC,KAAA;AAE5D,UAAA,MAAM,iBAAiB,MAAM;AAC3B,YAAM,MAAA,OAAA,uBAAc,GAAY,EAAA,CAAA;AAChC,YAAAD,0BAAA,CAAqB,WAAY,CAAA,cAAA,CAAe,KAAK,CAAA,EAAG,CAAC,GAAQ,KAAA;AAC/D,cAAA,IAAA,CAAI,2BAAK,IAAS,MAAA,WAAA,IAAe,QAAO,GAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAK,SAAQ,QAAU,EAAA;AAC7D,gBAAQ,OAAA,CAAA,GAAA,CAAI,IAAI,GAAG,CAAA,CAAA;AAAA,eACrB;AAAA,aACD,CAAA,CAAA;AAED,YAAA,KAAA,IACM,eAAe,CACnB,EAAA,YAAA,IAAgB,OAAQ,CAAA,IAAA,GAAO,GAC/B,YACA,EAAA,EAAA;AACA,cAAM,MAAA,MAAA,GAAS,aAAa,QAAS,EAAA,CAAA;AACrC,cAAA,IAAI,CAAC,OAAA,CAAQ,GAAI,CAAA,MAAM,CAAG,EAAA;AACxB,gBAAO,OAAA,MAAA,CAAA;AAAA,eACT;AAAA,aACF;AAEA,YAAO,OAAA,KAAA,CAAA,CAAA;AAAA,WACT,CAAA;AAEA,UAAA,MAAM,SAAS,cAAe,EAAA,CAAA;AAC9B,UAAU,SAAA,CAAA,YAAA;AAAA,YACR;AAAA,cACE,IAAM,EAAA,WAAA;AAAA,cACN,IAAM,EAAA,oBAAA;AAAA,cACN,KAAO,EAAA;AAAA,gBACL,GAAK,EAAA,MAAA;AAAA,gBACL,KAAO,EAAA;AAAA,kBACL,IAAM,EAAA,MAAA;AAAA,kBACN,OAAO,CAAa,UAAA,EAAA,MAAA,CAAA,CAAA;AAAA,iBACtB;AAAA,gBACA,QAAU,EAAA;AAAA,kBACR,IAAM,EAAA,MAAA;AAAA,kBACN,OAAO,CAAgB,aAAA,EAAA,MAAA,CAAA,CAAA;AAAA,iBACzB;AAAA,eACF;AAAA,aACF;AAAA,YACA,OAAA;AAAA,WACF,CAAA;AACA,UAAA,SAAA,CAAU,WAAY,CAAA,EAAE,SAAW,EAAA,MAAA,EAAQ,CAAA,CAAA;AAAA,SAC7C;AAAA,OACF;AAAA,MACA;AAAA,QACE,IAAM,EAAA,eAAA;AAAA,QACN,KAAO,EAAA,oBAAA;AAAA,QACP,OAAS,EAAA,CAAC,EAAE,cAAA,EAAgB,WAAkC,KAAA;AAC5D,UAAA,IAAI,eAAe,SAAW,EAAA;AAC5B,YAAA,MAAM,WAAqB,EAAC,CAAA;AAC5B,YAAAA,0BAAA,CAAqB,WAAY,CAAA,cAAA,CAAe,KAAK,CAAA,EAAG,CAAC,GAAQ,KAAA;AAC/D,cAAA,IAAA,CAAI,2BAAK,IAAS,MAAA,WAAA,IAAe,QAAO,GAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAK,SAAQ,QAAU,EAAA;AAC7D,gBAAS,QAAA,CAAA,IAAA,CAAK,IAAK,GAAI,CAAA,CAAA;AAAA,eACzB;AAAA,aACD,CAAA,CAAA;AACD,YAAA,MAAM,YAAY,cAAe,CAAA,SAAA,CAAA;AACjC,YAAA,MAAM,UAAa,GAAA,QAAA,CAAS,SAAU,CAAA,CAAC,MAAW,KAAA;AAChD,cAAA,OAAO,MAAW,KAAA,SAAA,CAAA;AAAA,aACnB,CAAA,CAAA;AAED,YAAA,IAAI,eAAe,CAAI,CAAA,EAAA;AACrB,cAAU,SAAA,CAAA,gBAAA,CAAiB,YAAY,OAAO,CAAA,CAAA;AAC9C,cAAI,IAAA,QAAA,CAAS,MAAS,GAAA,CAAA,GAAI,CAAG,EAAA;AAC3B,gBAAA,MAAM,UACH,GAAA,CAAA,UAAA,GAAa,CAAI,GAAA,QAAA,CAAS,UAAU,QAAS,CAAA,MAAA,CAAA;AAChD,gBAAA,SAAA,CAAU,YAAY,EAAE,SAAA,EAAW,QAAS,CAAA,UAAU,GAAG,CAAA,CAAA;AAAA,eAC3D;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA,MACA;AAAA,QACE,IAAM,EAAA,eAAA;AAAA,QACN,OAAS,EAAA,cAAA;AAAA,OACX;AAAA,KACF;AAAA,IACA,UAAY,EAAA,wCAAA;AAAA,IACZ,UAAY,EAAA,UAAA;AAAA,GACb,CAAA,CAAA;AAED,EAAAC,6BAAA,CAAwB,QAAQ,WAAa,EAAA;AAAA,IAC3C,IAAM,EAAA,oBAAA;AAAA,IACN,WAAa,EAAA,UAAA;AAAA,IACb,KAAO,EAAA;AAAA,MACL,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,SAAA;AAAA,QACN,WAAa,EAAA,kBAAA;AAAA,OACf;AAAA,MACA,WAAa,EAAA;AAAA,QACX,IAAM,EAAA,SAAA;AAAA,QACN,WAAa,EAAA,CAAA,6EAAA,CAAA;AAAA,QACb,QAAU,EAAA,IAAA;AAAA,OACZ;AAAA,MACA,GAAK,EAAA;AAAA,QACH,IAAM,EAAA,QAAA;AAAA,QACN,WAAa,EAAA,CAAA,8BAAA,CAAA;AAAA,QACb,WAAa,EAAA,SAAA;AAAA,OACf;AAAA,MACA,KAAO,EAAA;AAAA,QACL,IAAM,EAAA,MAAA;AAAA,QACN,WAAa,EAAA,WAAA;AAAA,QACb,YAAc,EAAA,KAAA;AAAA,OAChB;AAAA,MACA,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,MAAA;AAAA,QACN,eAAiB,EAAA,IAAA;AAAA,OACnB;AAAA,KACF;AAAA,IACA,UAAY,EAAA,wCAAA;AAAA,IACZ,UAAY,EAAA,aAAA;AAAA,IACZ,mBAAqB,EAAA,iBAAA;AAAA,GACtB,CAAA,CAAA;AACH;;;;;;;;"}
1
+ {"version":3,"file":"registerTabs.cjs.js","sources":["../src/registerTabs.tsx"],"sourcesContent":["import { ActionProps } from \"@plasmicapp/host/registerComponent\";\nimport { Tabs } from \"antd\";\nimport React, { ReactElement, useMemo } from \"react\";\nimport {\n Registerable,\n registerComponentHelper,\n traverseReactEltTree,\n} from \"./utils\";\n\nexport const tabsComponentName = \"plasmic-antd5-tabs\";\nexport const tabItemComponentName = \"plasmic-antd5-tab-item\";\n\ntype TabItemType = NonNullable<\n React.ComponentProps<typeof Tabs>[\"items\"]\n>[number];\n\nexport const AntdTabItem: React.FC<TabItemType> = ({ children }) => {\n return <div>{children}</div>;\n};\n\nfunction getTabItems(items: ReactElement): React.ReactElement<TabItemType>[] {\n return (items?.type as any)?.name == AntdTabItem.name\n ? [items]\n : items?.props.children;\n}\n\nfunction getTabItemKeys(items: ReactElement): string[] {\n const keys: string[] = [];\n traverseReactEltTree(items, (elt) => {\n if (\n (elt?.type as any)?.name === AntdTabItem.name &&\n typeof elt?.key === \"string\"\n ) {\n keys.push(`${elt.key}`);\n }\n });\n return keys;\n}\n\ntype TabsProps = Omit<\n React.ComponentProps<typeof Tabs>,\n \"items\" | \"animated\" | \"tabBarExtraContent\" | \"renderTabBar\"\n> & {\n items: ReactElement;\n animated: boolean;\n animateTabBar: boolean;\n animateTabContent: boolean;\n tabBarExtraContentLeft: React.ReactNode;\n tabBarExtraContentRight: React.ReactNode;\n sticky: boolean;\n stickyOffset: number;\n tabBarBackground: string;\n tabsScopeClassName?: string;\n tabsDropdownScopeClassName?: string;\n};\n\nexport function AntdTabs(props: TabsProps) {\n const {\n items: itemsRaw,\n animated,\n animateTabBar,\n animateTabContent,\n tabBarExtraContentLeft,\n tabBarExtraContentRight,\n sticky,\n stickyOffset,\n tabBarBackground,\n className,\n tabPosition,\n tabsScopeClassName,\n tabsDropdownScopeClassName,\n ...rest\n } = props;\n const animationProp: React.ComponentProps<typeof Tabs>[\"animated\"] = useMemo(\n () =>\n animated\n ? {\n inkBar: animateTabBar,\n tabPane: animateTabContent,\n }\n : false,\n [animateTabBar, animateTabContent, animated]\n );\n const items: TabItemType[] = useMemo(() => {\n if (!React.isValidElement(itemsRaw)) return [];\n const tabItems = getTabItems(itemsRaw);\n return tabItems\n .map((currentItem) => {\n return {\n ...currentItem.props,\n key: currentItem.key,\n children: <>{currentItem.props.children}</>,\n };\n })\n .filter((i) => i != null) as TabItemType[];\n }, [itemsRaw]);\n\n return (\n <Tabs\n className={`${className} ${tabsScopeClassName}`}\n popupClassName={tabsDropdownScopeClassName}\n tabBarExtraContent={{\n left: <>{tabBarExtraContentLeft}</>,\n right: <>{tabBarExtraContentRight}</>,\n }}\n tabPosition={tabPosition}\n /**\n * CAUTION: sticky tab-bars are only supported for tabPosition top.\n * In component metadata, I have specified that sticky prop is hidden when tabPosition !== \"top\".\n * however, and that's where the caution is, that does not mean that any previously set value of sticky is destroyed. It stays there, but just the prop is hidden from the Settings side menu in Plasmic Studio.\n *\n * Which is why I have to also check the tabPosition here. And that's redundant.\n */\n renderTabBar={\n sticky && tabPosition === \"top\"\n ? (tabBarProps, DefaultTabBar) => (\n <div\n style={{\n zIndex: 1,\n position: \"sticky\",\n top: stickyOffset || 0,\n }}\n >\n <DefaultTabBar\n {...tabBarProps}\n style={{ backgroundColor: tabBarBackground }}\n />\n </div>\n )\n : undefined\n }\n animated={animationProp}\n items={items}\n {...rest}\n />\n );\n}\n\n// function NavigateTabs({ componentProps, studioOps }: ActionProps<any>) {\n// const tabPanes: string[] = getTabItemKeys(componentProps.items);\n// const buttonStyle = {\n// width: \"100%\",\n// borderColor: \"#f3f3f2\",\n// borderRadius: 6,\n// fontSize: 12,\n// };\n// const activeKey = componentProps.activeKey;\n// const currTabPos = activeKey\n// ? tabPanes.findIndex((tabKey) => {\n// return tabKey === activeKey;\n// })\n// : 0;\n\n// return (\n// <div\n// style={{\n// width: \"100%\",\n// display: \"flex\",\n// flexDirection: \"row\",\n// gap: \"4px\",\n// justifyContent: \"space-between\",\n// }}\n// >\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const prevTabPos =\n// (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n// }\n// }}\n// >\n// Prev tab\n// </Button>\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const nextTabPos = (currTabPos + 1) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[nextTabPos] });\n// }\n// }}\n// >\n// Next tab\n// </Button>\n// </div>\n// );\n// }\n\nfunction OutlineMessage() {\n return <div>* To re-arrange tab panes, use the Outline panel</div>;\n}\n\nexport function registerTabs(loader?: Registerable) {\n registerComponentHelper(loader, AntdTabs, {\n name: tabsComponentName,\n displayName: \"Tabs\",\n defaultStyles: {\n width: \"stretch\",\n overflow: \"scroll\",\n },\n props: {\n activeKey: {\n editOnly: true,\n displayName: \"Active tab key\",\n uncontrolledProp: \"defaultActiveKey\",\n type: \"choice\",\n description: `Initial active tab's key`,\n options: (ps) => getTabItemKeys(ps.items),\n },\n animated: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Change tabs with animation\",\n },\n animateTabBar: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Animate the tab bar when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n animateTabContent: {\n type: \"boolean\",\n defaultValue: false,\n description: \"Fade-in tab content when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n centered: {\n type: \"boolean\",\n description: \"Center-align the tab bar\",\n },\n type: {\n type: \"choice\",\n defaultValueHint: \"line\",\n options: [\"line\", \"card\"],\n description: \"Basic style of tabs\",\n },\n items: {\n type: \"slot\",\n hidePlaceholder: true,\n allowedComponents: [tabItemComponentName],\n ...({ mergeWithParent: true } as any), // to make the tab items selectable from the components outline pane in Plasmic Studio.\n defaultValue: [\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"1\",\n label: {\n type: \"text\",\n value: \"First Item\",\n },\n children: {\n type: \"text\",\n value: \"First Children\",\n },\n },\n },\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"2\",\n label: {\n type: \"text\",\n value: \"Second Item\",\n },\n children: {\n type: \"text\",\n value: \"Second Children\",\n },\n },\n },\n ],\n },\n size: {\n type: \"choice\",\n defaultValueHint: \"middle\",\n options: [\"large\", \"middle\", \"small\"],\n description: \"Preset tab bar size\",\n },\n tabBarExtraContentLeft: {\n type: \"slot\",\n displayName: \"Extra content on left side\",\n hidePlaceholder: true,\n },\n tabBarExtraContentRight: {\n type: \"slot\",\n displayName: \"Extra content on right side\",\n hidePlaceholder: true,\n },\n tabBarGutter: {\n type: \"number\",\n displayName: \"Tab gap\",\n description: \"Gap (in pixels) between tabs\",\n advanced: true,\n },\n tabPosition: {\n type: \"choice\",\n defaultValueHint: \"top\",\n options: [\"top\", \"right\", \"bottom\", \"left\"],\n description: \"Position of tabs\",\n },\n destroyInactiveTabPane: {\n type: \"boolean\",\n description: `Destroy/Unmount inactive tab pane when changing tab`,\n advanced: true,\n },\n sticky: {\n type: \"boolean\",\n advanced: true,\n description: \"Stick tab bar to the top of the page when scrolling.\",\n defaultValue: false,\n hidden: (ps) => ps.tabPosition !== \"top\",\n },\n stickyOffset: {\n type: \"number\",\n advanced: true,\n description:\n \"Distance (in pixels) between the sticky tab bar and the top of the page as you scroll.\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabBarBackground: {\n type: \"color\",\n advanced: true,\n defaultValue: \"#FFF\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabsScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabs\",\n } as any,\n tabBarClassName: {\n type: \"class\",\n displayName: \"Tab bar\",\n selectors: [\n {\n selector: \":tabs.ant-tabs .ant-tabs-nav\",\n label: \"Base\",\n },\n ],\n },\n tabsDropdownScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabsDropdown\",\n } as any,\n tabsDropdownClassName: {\n type: \"class\",\n displayName: \"Overflow tabs menu\",\n selectors: [\n {\n selector: \":tabsDropdown.ant-tabs-dropdown .ant-tabs-dropdown-menu\",\n label: \"Base\",\n },\n ],\n },\n onChange: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"activeKey\", type: \"string\" }],\n },\n onTabClick: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n { name: \"tabKey\", type: \"string\" },\n { name: \"mouseEvent\", type: \"object\" },\n ],\n },\n onTabScroll: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"scrollInfo\", type: \"object\" }],\n },\n },\n states: {\n activeKey: {\n type: \"writable\",\n valueProp: \"activeKey\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n },\n },\n actions: [\n // {\n // type: \"custom-action\",\n // control: NavigateTabs,\n // },\n {\n type: \"button-action\",\n label: \"Add new tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n // Get the first positive integer that isn't already a key\n const generateNewKey = () => {\n const existingKeys = getTabItemKeys(componentProps.items);\n\n for (\n let keyCandidate = 1;\n keyCandidate <= existingKeys.length + 1;\n keyCandidate++\n ) {\n const strKey = keyCandidate.toString();\n const index = existingKeys.findIndex((k) => {\n return strKey === k;\n });\n if (index === -1) {\n return strKey;\n }\n }\n\n return undefined;\n };\n\n const tabKey = generateNewKey();\n studioOps.appendToSlot(\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: tabKey,\n label: {\n type: \"text\",\n value: `Tab Label ${tabKey}`,\n },\n children: {\n type: \"text\",\n value: `Tab Children ${tabKey}`,\n },\n },\n },\n \"items\"\n );\n studioOps.updateProps({ activeKey: tabKey });\n },\n },\n {\n type: \"button-action\",\n label: \"Delete current tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n if (componentProps.activeKey) {\n const tabPanes = getTabItemKeys(componentProps.items);\n const activeKey = componentProps.activeKey;\n const currTabPos = tabPanes.findIndex((tabKey) => {\n return tabKey === activeKey;\n });\n\n if (currTabPos !== -1) {\n studioOps.removeFromSlotAt(currTabPos, \"items\");\n if (tabPanes.length - 1 > 0) {\n const prevTabPos =\n (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n }\n }\n }\n },\n },\n {\n type: \"custom-action\",\n control: OutlineMessage,\n },\n ],\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabs\",\n });\n\n registerComponentHelper(loader, AntdTabItem, {\n name: tabItemComponentName,\n displayName: \"Tab Item\",\n props: {\n disabled: {\n type: \"boolean\",\n description: \"Disable this tab\",\n },\n forceRender: {\n type: \"boolean\",\n description: `Force render of content in the tab, not lazy render after clicking on the tab`,\n advanced: true,\n },\n key: {\n type: \"string\",\n description: `Unique identifier for this tab`,\n displayName: \"Tab key\",\n },\n label: {\n type: \"slot\",\n displayName: \"Tab title\",\n defaultValue: \"Tab\",\n },\n children: {\n type: \"slot\",\n hidePlaceholder: true,\n },\n },\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabItem\",\n parentComponentName: tabsComponentName,\n });\n}\n"],"names":["React","traverseReactEltTree","useMemo","Tabs","registerComponentHelper"],"mappings":"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"}
@@ -1,16 +1,12 @@
1
1
  import { Tabs } from "antd";
2
- import React from "react";
2
+ import React, { ReactElement } from "react";
3
3
  import { Registerable } from "./utils";
4
4
  export declare const tabsComponentName = "plasmic-antd5-tabs";
5
5
  export declare const tabItemComponentName = "plasmic-antd5-tab-item";
6
6
  type TabItemType = NonNullable<React.ComponentProps<typeof Tabs>["items"]>[number];
7
7
  export declare const AntdTabItem: React.FC<TabItemType>;
8
8
  type TabsProps = Omit<React.ComponentProps<typeof Tabs>, "items" | "animated" | "tabBarExtraContent" | "renderTabBar"> & {
9
- items: {
10
- props: {
11
- children: React.ReactElement<TabItemType>[];
12
- };
13
- } | React.ReactElement<TabItemType>;
9
+ items: ReactElement;
14
10
  animated: boolean;
15
11
  animateTabBar: boolean;
16
12
  animateTabContent: boolean;
@@ -42,13 +42,17 @@ const AntdTabItem = ({ children }) => {
42
42
  };
43
43
  function getTabItems(items) {
44
44
  var _a;
45
- if ((items == null ? void 0 : items.type) === AntdTabItem) {
46
- return [items];
47
- }
48
- if (Array.isArray((_a = items == null ? void 0 : items.props) == null ? void 0 : _a.children)) {
49
- return items.props.children.filter((item) => item.type === AntdTabItem);
50
- }
51
- return [];
45
+ return ((_a = items == null ? void 0 : items.type) == null ? void 0 : _a.name) == AntdTabItem.name ? [items] : items == null ? void 0 : items.props.children;
46
+ }
47
+ function getTabItemKeys(items) {
48
+ const keys = [];
49
+ traverseReactEltTree(items, (elt) => {
50
+ var _a;
51
+ if (((_a = elt == null ? void 0 : elt.type) == null ? void 0 : _a.name) === AntdTabItem.name && typeof (elt == null ? void 0 : elt.key) === "string") {
52
+ keys.push(`${elt.key}`);
53
+ }
54
+ });
55
+ return keys;
52
56
  }
53
57
  function AntdTabs(props) {
54
58
  const _a = props, {
@@ -92,9 +96,6 @@ function AntdTabs(props) {
92
96
  return [];
93
97
  const tabItems = getTabItems(itemsRaw);
94
98
  return tabItems.map((currentItem) => {
95
- if (!React.isValidElement(currentItem) || !React.isValidElement(currentItem.props.children)) {
96
- return null;
97
- }
98
99
  return __spreadProps(__spreadValues({}, currentItem.props), {
99
100
  key: currentItem.key,
100
101
  children: /* @__PURE__ */ React.createElement(React.Fragment, null, currentItem.props.children)
@@ -111,7 +112,7 @@ function AntdTabs(props) {
111
112
  right: /* @__PURE__ */ React.createElement(React.Fragment, null, tabBarExtraContentRight)
112
113
  },
113
114
  tabPosition,
114
- renderTabBar: sticky && tabPosition === "top" ? (props2, DefaultTabBar) => /* @__PURE__ */ React.createElement(
115
+ renderTabBar: sticky && tabPosition === "top" ? (tabBarProps, DefaultTabBar) => /* @__PURE__ */ React.createElement(
115
116
  "div",
116
117
  {
117
118
  style: {
@@ -122,7 +123,7 @@ function AntdTabs(props) {
122
123
  },
123
124
  /* @__PURE__ */ React.createElement(
124
125
  DefaultTabBar,
125
- __spreadProps(__spreadValues({}, props2), {
126
+ __spreadProps(__spreadValues({}, tabBarProps), {
126
127
  style: { backgroundColor: tabBarBackground }
127
128
  })
128
129
  )
@@ -135,15 +136,6 @@ function AntdTabs(props) {
135
136
  function OutlineMessage() {
136
137
  return /* @__PURE__ */ React.createElement("div", null, "* To re-arrange tab panes, use the Outline panel");
137
138
  }
138
- function getActiveKeyOptions(props) {
139
- const options = /* @__PURE__ */ new Set();
140
- traverseReactEltTree(getTabItems(props.items), (elt) => {
141
- if ((elt == null ? void 0 : elt.type) === AntdTabItem && typeof (elt == null ? void 0 : elt.key) === "string") {
142
- options.add(elt.key);
143
- }
144
- });
145
- return Array.from(options.keys());
146
- }
147
139
  function registerTabs(loader) {
148
140
  registerComponentHelper(loader, AntdTabs, {
149
141
  name: tabsComponentName,
@@ -159,7 +151,7 @@ function registerTabs(loader) {
159
151
  uncontrolledProp: "defaultActiveKey",
160
152
  type: "choice",
161
153
  description: `Initial active tab's key`,
162
- options: getActiveKeyOptions
154
+ options: (ps) => getTabItemKeys(ps.items)
163
155
  },
164
156
  animated: {
165
157
  type: "boolean",
@@ -344,15 +336,13 @@ function registerTabs(loader) {
344
336
  label: "Add new tab",
345
337
  onClick: ({ componentProps, studioOps }) => {
346
338
  const generateNewKey = () => {
347
- const keysSet = /* @__PURE__ */ new Set();
348
- traverseReactEltTree(getTabItems(componentProps.items), (elt) => {
349
- if ((elt == null ? void 0 : elt.type) === AntdTabItem && typeof (elt == null ? void 0 : elt.key) === "string") {
350
- keysSet.add(elt.key);
351
- }
352
- });
353
- for (let keyCandidate = 1; keyCandidate <= keysSet.size + 1; keyCandidate++) {
339
+ const existingKeys = getTabItemKeys(componentProps.items);
340
+ for (let keyCandidate = 1; keyCandidate <= existingKeys.length + 1; keyCandidate++) {
354
341
  const strKey = keyCandidate.toString();
355
- if (!keysSet.has(strKey)) {
342
+ const index = existingKeys.findIndex((k) => {
343
+ return strKey === k;
344
+ });
345
+ if (index === -1) {
356
346
  return strKey;
357
347
  }
358
348
  }
@@ -385,12 +375,7 @@ function registerTabs(loader) {
385
375
  label: "Delete current tab",
386
376
  onClick: ({ componentProps, studioOps }) => {
387
377
  if (componentProps.activeKey) {
388
- const tabPanes = [];
389
- traverseReactEltTree(getTabItems(componentProps.items), (elt) => {
390
- if ((elt == null ? void 0 : elt.type) === AntdTabItem && typeof (elt == null ? void 0 : elt.key) === "string") {
391
- tabPanes.push(elt.key);
392
- }
393
- });
378
+ const tabPanes = getTabItemKeys(componentProps.items);
394
379
  const activeKey = componentProps.activeKey;
395
380
  const currTabPos = tabPanes.findIndex((tabKey) => {
396
381
  return tabKey === activeKey;
@@ -1 +1 @@
1
- {"version":3,"file":"registerTabs.esm.js","sources":["../src/registerTabs.tsx"],"sourcesContent":["import { Button, Tabs } from \"antd\";\nimport React, { useMemo } from \"react\";\nimport {\n Registerable,\n registerComponentHelper,\n traverseReactEltTree,\n} from \"./utils\";\nimport { ActionProps } from \"@plasmicapp/host/registerComponent\";\n\nexport const tabsComponentName = \"plasmic-antd5-tabs\";\nexport const tabItemComponentName = \"plasmic-antd5-tab-item\";\n\ntype TabItemType = NonNullable<\n React.ComponentProps<typeof Tabs>[\"items\"]\n>[number];\n\nexport const AntdTabItem: React.FC<TabItemType> = ({ children }) => {\n return <div>{children}</div>;\n};\n\nfunction getTabItems(\n items:\n | { props: { children: React.ReactElement<TabItemType>[] } }\n | React.ReactElement<TabItemType>\n): React.ReactElement<TabItemType>[] {\n if ((items as React.ReactElement<TabItemType>)?.type === AntdTabItem) {\n return [items as React.ReactElement<TabItemType>];\n }\n if (Array.isArray(items?.props?.children)) {\n return items.props.children.filter((item) => item.type === AntdTabItem);\n }\n return [];\n}\n\ntype TabsProps = Omit<\n React.ComponentProps<typeof Tabs>,\n \"items\" | \"animated\" | \"tabBarExtraContent\" | \"renderTabBar\"\n> & {\n items:\n | { props: { children: React.ReactElement<TabItemType>[] } }\n | React.ReactElement<TabItemType>;\n animated: boolean;\n animateTabBar: boolean;\n animateTabContent: boolean;\n tabBarExtraContentLeft: React.ReactNode;\n tabBarExtraContentRight: React.ReactNode;\n sticky: boolean;\n stickyOffset: number;\n tabBarBackground: string;\n tabsScopeClassName?: string;\n tabsDropdownScopeClassName?: string;\n};\n\nexport function AntdTabs(props: TabsProps) {\n const {\n items: itemsRaw,\n animated,\n animateTabBar,\n animateTabContent,\n tabBarExtraContentLeft,\n tabBarExtraContentRight,\n sticky,\n stickyOffset,\n tabBarBackground,\n className,\n tabPosition,\n tabsScopeClassName,\n tabsDropdownScopeClassName,\n ...rest\n } = props;\n const animationProp: React.ComponentProps<typeof Tabs>[\"animated\"] = useMemo(\n () =>\n animated\n ? {\n inkBar: animateTabBar,\n tabPane: animateTabContent,\n }\n : false,\n [animateTabBar, animateTabContent, animated]\n );\n const items: TabItemType[] = useMemo(() => {\n if (!React.isValidElement(itemsRaw)) return [];\n const tabItems = getTabItems(itemsRaw);\n return tabItems\n .map((currentItem) => {\n if (\n !React.isValidElement(currentItem) ||\n !React.isValidElement(currentItem.props.children)\n ) {\n return null;\n }\n\n return {\n ...currentItem.props,\n key: currentItem.key,\n children: <>{currentItem.props.children}</>,\n };\n })\n .filter((i) => i != null) as TabItemType[];\n }, [itemsRaw]);\n return (\n <Tabs\n className={`${className} ${tabsScopeClassName}`}\n popupClassName={tabsDropdownScopeClassName}\n tabBarExtraContent={{\n left: <>{tabBarExtraContentLeft}</>,\n right: <>{tabBarExtraContentRight}</>,\n }}\n tabPosition={tabPosition}\n /**\n * CAUTION: sticky tab-bars are only supported for tabPosition top.\n * In component metadata, I have specified that sticky prop is hidden when tabPosition !== \"top\".\n * however, and that's where the caution is, that does not mean that any previously set value of sticky is destroyed. It stays there, but just the prop is hidden from the Settings side menu in Plasmic Studio.\n *\n * Which is why I have to also check the tabPosition here. And that's redundant.\n */\n renderTabBar={\n sticky && tabPosition === \"top\"\n ? (props, DefaultTabBar) => (\n <div\n style={{\n zIndex: 1,\n position: \"sticky\",\n top: stickyOffset || 0,\n }}\n >\n <DefaultTabBar\n {...props}\n style={{ backgroundColor: tabBarBackground }}\n />\n </div>\n )\n : undefined\n }\n animated={animationProp}\n items={items}\n {...rest}\n />\n );\n}\n\n// function NavigateTabs({ componentProps, studioOps }: ActionProps<any>) {\n// const tabPanes: string[] = [];\n// traverseReactEltTree(getTabItems(componentProps.items), (elt) => {\n// if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n// tabPanes.push(elt.key);\n// }\n// });\n// const buttonStyle = {\n// width: \"100%\",\n// borderColor: \"#f3f3f2\",\n// borderRadius: 6,\n// fontSize: 12,\n// };\n// const activeKey = componentProps.activeKey;\n// const currTabPos = activeKey\n// ? tabPanes.findIndex((tabKey) => {\n// return tabKey === activeKey;\n// })\n// : 0;\n\n// return (\n// <div\n// style={{\n// width: \"100%\",\n// display: \"flex\",\n// flexDirection: \"row\",\n// gap: \"4px\",\n// justifyContent: \"space-between\",\n// }}\n// >\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const prevTabPos =\n// (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n// }\n// }}\n// >\n// Prev tab\n// </Button>\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const nextTabPos = (currTabPos + 1) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[nextTabPos] });\n// }\n// }}\n// >\n// Next tab\n// </Button>\n// </div>\n// );\n// }\n\nfunction OutlineMessage() {\n return <div>* To re-arrange tab panes, use the Outline panel</div>;\n}\n\nfunction getActiveKeyOptions(props: TabsProps) {\n const options = new Set<string>();\n traverseReactEltTree(getTabItems(props.items), (elt) => {\n if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n options.add(elt.key);\n }\n });\n return Array.from(options.keys());\n}\n\nexport function registerTabs(loader?: Registerable) {\n registerComponentHelper(loader, AntdTabs, {\n name: tabsComponentName,\n displayName: \"Tabs\",\n defaultStyles: {\n width: \"stretch\",\n overflow: \"scroll\",\n },\n props: {\n activeKey: {\n editOnly: true,\n displayName: \"Active tab key\",\n uncontrolledProp: \"defaultActiveKey\",\n type: \"choice\",\n description: `Initial active tab's key`,\n options: getActiveKeyOptions,\n },\n animated: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Change tabs with animation\",\n },\n animateTabBar: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Animate the tab bar when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n animateTabContent: {\n type: \"boolean\",\n defaultValue: false,\n description: \"Fade-in tab content when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n centered: {\n type: \"boolean\",\n description: \"Center-align the tab bar\",\n },\n type: {\n type: \"choice\",\n defaultValueHint: \"line\",\n options: [\"line\", \"card\"],\n description: \"Basic style of tabs\",\n },\n items: {\n type: \"slot\",\n hidePlaceholder: true,\n allowedComponents: [tabItemComponentName],\n ...({ mergeWithParent: true } as any), // to make the tab items selectable from the components outline pane in Plasmic Studio.\n defaultValue: [\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"1\",\n label: {\n type: \"text\",\n value: \"First Item\",\n },\n children: {\n type: \"text\",\n value: \"First Children\",\n },\n },\n },\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"2\",\n label: {\n type: \"text\",\n value: \"Second Item\",\n },\n children: {\n type: \"text\",\n value: \"Second Children\",\n },\n },\n },\n ],\n },\n size: {\n type: \"choice\",\n defaultValueHint: \"middle\",\n options: [\"large\", \"middle\", \"small\"],\n description: \"Preset tab bar size\",\n },\n tabBarExtraContentLeft: {\n type: \"slot\",\n displayName: \"Extra content on left side\",\n hidePlaceholder: true,\n },\n tabBarExtraContentRight: {\n type: \"slot\",\n displayName: \"Extra content on right side\",\n hidePlaceholder: true,\n },\n tabBarGutter: {\n type: \"number\",\n displayName: \"Tab gap\",\n description: \"Gap (in pixels) between tabs\",\n advanced: true,\n },\n tabPosition: {\n type: \"choice\",\n defaultValueHint: \"top\",\n options: [\"top\", \"right\", \"bottom\", \"left\"],\n description: \"Position of tabs\",\n },\n destroyInactiveTabPane: {\n type: \"boolean\",\n description: `Destroy/Unmount inactive tab pane when changing tab`,\n advanced: true,\n },\n sticky: {\n type: \"boolean\",\n advanced: true,\n description: \"Stick tab bar to the top of the page when scrolling.\",\n defaultValue: false,\n hidden: (ps) => ps.tabPosition !== \"top\",\n },\n stickyOffset: {\n type: \"number\",\n advanced: true,\n description:\n \"Distance (in pixels) between the sticky tab bar and the top of the page as you scroll.\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabBarBackground: {\n type: \"color\",\n advanced: true,\n defaultValue: \"#FFF\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabsScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabs\",\n } as any,\n tabBarClassName: {\n type: \"class\",\n displayName: \"Tab bar\",\n selectors: [\n {\n selector: \":tabs.ant-tabs .ant-tabs-nav\",\n label: \"Base\",\n },\n ],\n },\n tabsDropdownScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabsDropdown\",\n } as any,\n tabsDropdownClassName: {\n type: \"class\",\n displayName: \"Overflow tabs menu\",\n selectors: [\n {\n selector: \":tabsDropdown.ant-tabs-dropdown .ant-tabs-dropdown-menu\",\n label: \"Base\",\n },\n ],\n },\n onChange: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"activeKey\", type: \"string\" }],\n },\n onTabClick: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n { name: \"tabKey\", type: \"string\" },\n { name: \"mouseEvent\", type: \"object\" },\n ],\n },\n onTabScroll: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"scrollInfo\", type: \"object\" }],\n },\n },\n states: {\n activeKey: {\n type: \"writable\",\n valueProp: \"activeKey\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n },\n },\n actions: [\n // {\n // type: \"custom-action\",\n // control: NavigateTabs,\n // },\n {\n type: \"button-action\",\n label: \"Add new tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n // Get the first positive integer that isn't already a key\n const generateNewKey = () => {\n const keysSet = new Set<string>();\n traverseReactEltTree(getTabItems(componentProps.items), (elt) => {\n if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n keysSet.add(elt.key);\n }\n });\n\n for (\n let keyCandidate = 1;\n keyCandidate <= keysSet.size + 1;\n keyCandidate++\n ) {\n const strKey = keyCandidate.toString();\n if (!keysSet.has(strKey)) {\n return strKey;\n }\n }\n\n return undefined;\n };\n\n const tabKey = generateNewKey();\n studioOps.appendToSlot(\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: tabKey,\n label: {\n type: \"text\",\n value: `Tab Label ${tabKey}`,\n },\n children: {\n type: \"text\",\n value: `Tab Children ${tabKey}`,\n },\n },\n },\n \"items\"\n );\n studioOps.updateProps({ activeKey: tabKey });\n },\n },\n {\n type: \"button-action\",\n label: \"Delete current tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n if (componentProps.activeKey) {\n const tabPanes: string[] = [];\n traverseReactEltTree(getTabItems(componentProps.items), (elt) => {\n if (elt?.type === AntdTabItem && typeof elt?.key === \"string\") {\n tabPanes.push(elt!.key!);\n }\n });\n const activeKey = componentProps.activeKey;\n const currTabPos = tabPanes.findIndex((tabKey) => {\n return tabKey === activeKey;\n });\n\n if (currTabPos !== -1) {\n studioOps.removeFromSlotAt(currTabPos, \"items\");\n if (tabPanes.length - 1 > 0) {\n const prevTabPos =\n (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n }\n }\n }\n },\n },\n {\n type: \"custom-action\",\n control: OutlineMessage,\n },\n ],\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabs\",\n });\n\n registerComponentHelper(loader, AntdTabItem, {\n name: tabItemComponentName,\n displayName: \"Tab Item\",\n props: {\n disabled: {\n type: \"boolean\",\n description: \"Disable this tab\",\n },\n forceRender: {\n type: \"boolean\",\n description: `Force render of content in the tab, not lazy render after clicking on the tab`,\n advanced: true,\n },\n key: {\n type: \"string\",\n description: `Unique identifier for this tab`,\n displayName: \"Tab key\",\n },\n label: {\n type: \"slot\",\n displayName: \"Tab title\",\n defaultValue: \"Tab\",\n },\n children: {\n type: \"slot\",\n hidePlaceholder: true,\n },\n },\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabItem\",\n parentComponentName: tabsComponentName,\n });\n}\n"],"names":["props"],"mappings":"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"}
1
+ {"version":3,"file":"registerTabs.esm.js","sources":["../src/registerTabs.tsx"],"sourcesContent":["import { ActionProps } from \"@plasmicapp/host/registerComponent\";\nimport { Tabs } from \"antd\";\nimport React, { ReactElement, useMemo } from \"react\";\nimport {\n Registerable,\n registerComponentHelper,\n traverseReactEltTree,\n} from \"./utils\";\n\nexport const tabsComponentName = \"plasmic-antd5-tabs\";\nexport const tabItemComponentName = \"plasmic-antd5-tab-item\";\n\ntype TabItemType = NonNullable<\n React.ComponentProps<typeof Tabs>[\"items\"]\n>[number];\n\nexport const AntdTabItem: React.FC<TabItemType> = ({ children }) => {\n return <div>{children}</div>;\n};\n\nfunction getTabItems(items: ReactElement): React.ReactElement<TabItemType>[] {\n return (items?.type as any)?.name == AntdTabItem.name\n ? [items]\n : items?.props.children;\n}\n\nfunction getTabItemKeys(items: ReactElement): string[] {\n const keys: string[] = [];\n traverseReactEltTree(items, (elt) => {\n if (\n (elt?.type as any)?.name === AntdTabItem.name &&\n typeof elt?.key === \"string\"\n ) {\n keys.push(`${elt.key}`);\n }\n });\n return keys;\n}\n\ntype TabsProps = Omit<\n React.ComponentProps<typeof Tabs>,\n \"items\" | \"animated\" | \"tabBarExtraContent\" | \"renderTabBar\"\n> & {\n items: ReactElement;\n animated: boolean;\n animateTabBar: boolean;\n animateTabContent: boolean;\n tabBarExtraContentLeft: React.ReactNode;\n tabBarExtraContentRight: React.ReactNode;\n sticky: boolean;\n stickyOffset: number;\n tabBarBackground: string;\n tabsScopeClassName?: string;\n tabsDropdownScopeClassName?: string;\n};\n\nexport function AntdTabs(props: TabsProps) {\n const {\n items: itemsRaw,\n animated,\n animateTabBar,\n animateTabContent,\n tabBarExtraContentLeft,\n tabBarExtraContentRight,\n sticky,\n stickyOffset,\n tabBarBackground,\n className,\n tabPosition,\n tabsScopeClassName,\n tabsDropdownScopeClassName,\n ...rest\n } = props;\n const animationProp: React.ComponentProps<typeof Tabs>[\"animated\"] = useMemo(\n () =>\n animated\n ? {\n inkBar: animateTabBar,\n tabPane: animateTabContent,\n }\n : false,\n [animateTabBar, animateTabContent, animated]\n );\n const items: TabItemType[] = useMemo(() => {\n if (!React.isValidElement(itemsRaw)) return [];\n const tabItems = getTabItems(itemsRaw);\n return tabItems\n .map((currentItem) => {\n return {\n ...currentItem.props,\n key: currentItem.key,\n children: <>{currentItem.props.children}</>,\n };\n })\n .filter((i) => i != null) as TabItemType[];\n }, [itemsRaw]);\n\n return (\n <Tabs\n className={`${className} ${tabsScopeClassName}`}\n popupClassName={tabsDropdownScopeClassName}\n tabBarExtraContent={{\n left: <>{tabBarExtraContentLeft}</>,\n right: <>{tabBarExtraContentRight}</>,\n }}\n tabPosition={tabPosition}\n /**\n * CAUTION: sticky tab-bars are only supported for tabPosition top.\n * In component metadata, I have specified that sticky prop is hidden when tabPosition !== \"top\".\n * however, and that's where the caution is, that does not mean that any previously set value of sticky is destroyed. It stays there, but just the prop is hidden from the Settings side menu in Plasmic Studio.\n *\n * Which is why I have to also check the tabPosition here. And that's redundant.\n */\n renderTabBar={\n sticky && tabPosition === \"top\"\n ? (tabBarProps, DefaultTabBar) => (\n <div\n style={{\n zIndex: 1,\n position: \"sticky\",\n top: stickyOffset || 0,\n }}\n >\n <DefaultTabBar\n {...tabBarProps}\n style={{ backgroundColor: tabBarBackground }}\n />\n </div>\n )\n : undefined\n }\n animated={animationProp}\n items={items}\n {...rest}\n />\n );\n}\n\n// function NavigateTabs({ componentProps, studioOps }: ActionProps<any>) {\n// const tabPanes: string[] = getTabItemKeys(componentProps.items);\n// const buttonStyle = {\n// width: \"100%\",\n// borderColor: \"#f3f3f2\",\n// borderRadius: 6,\n// fontSize: 12,\n// };\n// const activeKey = componentProps.activeKey;\n// const currTabPos = activeKey\n// ? tabPanes.findIndex((tabKey) => {\n// return tabKey === activeKey;\n// })\n// : 0;\n\n// return (\n// <div\n// style={{\n// width: \"100%\",\n// display: \"flex\",\n// flexDirection: \"row\",\n// gap: \"4px\",\n// justifyContent: \"space-between\",\n// }}\n// >\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const prevTabPos =\n// (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n// }\n// }}\n// >\n// Prev tab\n// </Button>\n// <Button\n// style={buttonStyle}\n// onClick={() => {\n// if (tabPanes.length > 0) {\n// const nextTabPos = (currTabPos + 1) % tabPanes.length;\n// studioOps.updateProps({ activeKey: tabPanes[nextTabPos] });\n// }\n// }}\n// >\n// Next tab\n// </Button>\n// </div>\n// );\n// }\n\nfunction OutlineMessage() {\n return <div>* To re-arrange tab panes, use the Outline panel</div>;\n}\n\nexport function registerTabs(loader?: Registerable) {\n registerComponentHelper(loader, AntdTabs, {\n name: tabsComponentName,\n displayName: \"Tabs\",\n defaultStyles: {\n width: \"stretch\",\n overflow: \"scroll\",\n },\n props: {\n activeKey: {\n editOnly: true,\n displayName: \"Active tab key\",\n uncontrolledProp: \"defaultActiveKey\",\n type: \"choice\",\n description: `Initial active tab's key`,\n options: (ps) => getTabItemKeys(ps.items),\n },\n animated: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Change tabs with animation\",\n },\n animateTabBar: {\n type: \"boolean\",\n defaultValue: true,\n description: \"Animate the tab bar when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n animateTabContent: {\n type: \"boolean\",\n defaultValue: false,\n description: \"Fade-in tab content when switching tabs\",\n hidden: (ps) => !ps.animated,\n },\n centered: {\n type: \"boolean\",\n description: \"Center-align the tab bar\",\n },\n type: {\n type: \"choice\",\n defaultValueHint: \"line\",\n options: [\"line\", \"card\"],\n description: \"Basic style of tabs\",\n },\n items: {\n type: \"slot\",\n hidePlaceholder: true,\n allowedComponents: [tabItemComponentName],\n ...({ mergeWithParent: true } as any), // to make the tab items selectable from the components outline pane in Plasmic Studio.\n defaultValue: [\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"1\",\n label: {\n type: \"text\",\n value: \"First Item\",\n },\n children: {\n type: \"text\",\n value: \"First Children\",\n },\n },\n },\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: \"2\",\n label: {\n type: \"text\",\n value: \"Second Item\",\n },\n children: {\n type: \"text\",\n value: \"Second Children\",\n },\n },\n },\n ],\n },\n size: {\n type: \"choice\",\n defaultValueHint: \"middle\",\n options: [\"large\", \"middle\", \"small\"],\n description: \"Preset tab bar size\",\n },\n tabBarExtraContentLeft: {\n type: \"slot\",\n displayName: \"Extra content on left side\",\n hidePlaceholder: true,\n },\n tabBarExtraContentRight: {\n type: \"slot\",\n displayName: \"Extra content on right side\",\n hidePlaceholder: true,\n },\n tabBarGutter: {\n type: \"number\",\n displayName: \"Tab gap\",\n description: \"Gap (in pixels) between tabs\",\n advanced: true,\n },\n tabPosition: {\n type: \"choice\",\n defaultValueHint: \"top\",\n options: [\"top\", \"right\", \"bottom\", \"left\"],\n description: \"Position of tabs\",\n },\n destroyInactiveTabPane: {\n type: \"boolean\",\n description: `Destroy/Unmount inactive tab pane when changing tab`,\n advanced: true,\n },\n sticky: {\n type: \"boolean\",\n advanced: true,\n description: \"Stick tab bar to the top of the page when scrolling.\",\n defaultValue: false,\n hidden: (ps) => ps.tabPosition !== \"top\",\n },\n stickyOffset: {\n type: \"number\",\n advanced: true,\n description:\n \"Distance (in pixels) between the sticky tab bar and the top of the page as you scroll.\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabBarBackground: {\n type: \"color\",\n advanced: true,\n defaultValue: \"#FFF\",\n hidden: (ps) => ps.tabPosition !== \"top\" || !ps.sticky,\n },\n tabsScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabs\",\n } as any,\n tabBarClassName: {\n type: \"class\",\n displayName: \"Tab bar\",\n selectors: [\n {\n selector: \":tabs.ant-tabs .ant-tabs-nav\",\n label: \"Base\",\n },\n ],\n },\n tabsDropdownScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"tabsDropdown\",\n } as any,\n tabsDropdownClassName: {\n type: \"class\",\n displayName: \"Overflow tabs menu\",\n selectors: [\n {\n selector: \":tabsDropdown.ant-tabs-dropdown .ant-tabs-dropdown-menu\",\n label: \"Base\",\n },\n ],\n },\n onChange: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"activeKey\", type: \"string\" }],\n },\n onTabClick: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [\n { name: \"tabKey\", type: \"string\" },\n { name: \"mouseEvent\", type: \"object\" },\n ],\n },\n onTabScroll: {\n type: \"eventHandler\",\n advanced: true,\n argTypes: [{ name: \"scrollInfo\", type: \"object\" }],\n },\n },\n states: {\n activeKey: {\n type: \"writable\",\n valueProp: \"activeKey\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n },\n },\n actions: [\n // {\n // type: \"custom-action\",\n // control: NavigateTabs,\n // },\n {\n type: \"button-action\",\n label: \"Add new tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n // Get the first positive integer that isn't already a key\n const generateNewKey = () => {\n const existingKeys = getTabItemKeys(componentProps.items);\n\n for (\n let keyCandidate = 1;\n keyCandidate <= existingKeys.length + 1;\n keyCandidate++\n ) {\n const strKey = keyCandidate.toString();\n const index = existingKeys.findIndex((k) => {\n return strKey === k;\n });\n if (index === -1) {\n return strKey;\n }\n }\n\n return undefined;\n };\n\n const tabKey = generateNewKey();\n studioOps.appendToSlot(\n {\n type: \"component\",\n name: tabItemComponentName,\n props: {\n key: tabKey,\n label: {\n type: \"text\",\n value: `Tab Label ${tabKey}`,\n },\n children: {\n type: \"text\",\n value: `Tab Children ${tabKey}`,\n },\n },\n },\n \"items\"\n );\n studioOps.updateProps({ activeKey: tabKey });\n },\n },\n {\n type: \"button-action\",\n label: \"Delete current tab\",\n onClick: ({ componentProps, studioOps }: ActionProps<any>) => {\n if (componentProps.activeKey) {\n const tabPanes = getTabItemKeys(componentProps.items);\n const activeKey = componentProps.activeKey;\n const currTabPos = tabPanes.findIndex((tabKey) => {\n return tabKey === activeKey;\n });\n\n if (currTabPos !== -1) {\n studioOps.removeFromSlotAt(currTabPos, \"items\");\n if (tabPanes.length - 1 > 0) {\n const prevTabPos =\n (currTabPos - 1 + tabPanes.length) % tabPanes.length;\n studioOps.updateProps({ activeKey: tabPanes[prevTabPos] });\n }\n }\n }\n },\n },\n {\n type: \"custom-action\",\n control: OutlineMessage,\n },\n ],\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabs\",\n });\n\n registerComponentHelper(loader, AntdTabItem, {\n name: tabItemComponentName,\n displayName: \"Tab Item\",\n props: {\n disabled: {\n type: \"boolean\",\n description: \"Disable this tab\",\n },\n forceRender: {\n type: \"boolean\",\n description: `Force render of content in the tab, not lazy render after clicking on the tab`,\n advanced: true,\n },\n key: {\n type: \"string\",\n description: `Unique identifier for this tab`,\n displayName: \"Tab key\",\n },\n label: {\n type: \"slot\",\n displayName: \"Tab title\",\n defaultValue: \"Tab\",\n },\n children: {\n type: \"slot\",\n hidePlaceholder: true,\n },\n },\n importPath: \"@plasmicpkgs/antd5/skinny/registerTabs\",\n importName: \"AntdTabItem\",\n parentComponentName: tabsComponentName,\n });\n}\n"],"names":[],"mappings":"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"}