@lifesg/react-design-system 3.5.0-canary.6 → 3.5.0-canary.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/accordion-item.js +1 -1
- package/accordion/accordion-item.js.map +1 -1
- package/accordion/types.d.ts +14 -1
- package/button/button.style.js +20 -19
- package/button/button.style.js.map +1 -1
- package/cjs/accordion/accordion-item.js +1 -1
- package/cjs/accordion/accordion-item.js.map +1 -1
- package/cjs/button/button.style.js +3 -2
- package/cjs/button/button.style.js.map +1 -1
- package/cjs/external/dompurify/dist/purify.es.js +2 -2
- package/cjs/external/dompurify/dist/purify.es.js.map +1 -1
- package/cjs/file-download/file-download.js +1 -1
- package/cjs/file-download/file-download.js.map +1 -1
- package/cjs/file-download/file-list-card/file-list-card.js +1 -1
- package/cjs/file-download/file-list-card/file-list-card.js.map +1 -1
- package/cjs/file-download/file-list-card/file-list-card.styles.js +75 -59
- package/cjs/file-download/file-list-card/file-list-card.styles.js.map +1 -1
- package/cjs/file-upload/helper.js +1 -1
- package/cjs/file-upload/helper.js.map +1 -1
- package/cjs/fullscreen-image-carousel/fullscreen-image-carousel.js +1 -1
- package/cjs/fullscreen-image-carousel/fullscreen-image-carousel.js.map +1 -1
- package/cjs/fullscreen-image-carousel/fullscreen-image-carousel.style.js +19 -19
- package/cjs/fullscreen-image-carousel/fullscreen-image-carousel.style.js.map +1 -1
- package/cjs/input-group/input-group-list-addon.js +1 -1
- package/cjs/input-group/input-group-list-addon.js.map +1 -1
- package/cjs/input-range-select/input-range-select.js +1 -1
- package/cjs/input-range-select/input-range-select.js.map +1 -1
- package/cjs/input-select/input-select.js +1 -1
- package/cjs/input-select/input-select.js.map +1 -1
- package/cjs/navbar/menu.js +1 -1
- package/cjs/navbar/menu.js.map +1 -1
- package/cjs/navbar/menu.styles.js +1 -1
- package/cjs/navbar/menu.styles.js.map +1 -1
- package/cjs/navbar/navbar-items.js +1 -1
- package/cjs/navbar/navbar-items.js.map +1 -1
- package/cjs/navbar/navbar-items.styles.js +20 -21
- package/cjs/navbar/navbar-items.styles.js.map +1 -1
- package/cjs/otp-verification/thumbnail/email-thumbnail.js.map +1 -1
- package/cjs/otp-verification/thumbnail/phone-thumbnail.js.map +1 -1
- package/cjs/shared/dropdown-list/dropdown-list.js +1 -1
- package/cjs/shared/dropdown-list/dropdown-list.js.map +1 -1
- package/cjs/sidenav/sidenav-item.js +1 -1
- package/cjs/sidenav/sidenav-item.js.map +1 -1
- package/cjs/tab/tab-context-provider.js +2 -0
- package/cjs/tab/tab-context-provider.js.map +1 -0
- package/cjs/tab/tab-context.js +1 -1
- package/cjs/tab/tab-context.js.map +1 -1
- package/cjs/tab/tab-item.js +1 -1
- package/cjs/tab/tab-item.js.map +1 -1
- package/cjs/tab/tab-link-chain.js +1 -1
- package/cjs/tab/tab-link-chain.js.map +1 -1
- package/cjs/tab/tab-list-item.js +2 -0
- package/cjs/tab/tab-list-item.js.map +1 -0
- package/cjs/tab/tab-list.js +2 -0
- package/cjs/tab/tab-list.js.map +1 -0
- package/cjs/tab/tab-panel.js +2 -0
- package/cjs/tab/tab-panel.js.map +1 -0
- package/cjs/tab/tab.js +1 -1
- package/cjs/tab/tab.js.map +1 -1
- package/external/dompurify/dist/purify.es.js +2 -2
- package/external/dompurify/dist/purify.es.js.map +1 -1
- package/file-download/file-download.d.ts +1 -1
- package/file-download/file-download.js +1 -1
- package/file-download/file-download.js.map +1 -1
- package/file-download/file-list-card/file-list-card.d.ts +1 -1
- package/file-download/file-list-card/file-list-card.js +1 -1
- package/file-download/file-list-card/file-list-card.js.map +1 -1
- package/file-download/file-list-card/file-list-card.styles.d.ts +8 -0
- package/file-download/file-list-card/file-list-card.styles.js +53 -37
- package/file-download/file-list-card/file-list-card.styles.js.map +1 -1
- package/file-download/file-list-card/types.d.ts +2 -1
- package/file-download/types.d.ts +7 -0
- package/file-upload/helper.d.ts +30 -0
- package/file-upload/helper.js +1 -1
- package/file-upload/helper.js.map +1 -1
- package/fullscreen-image-carousel/fullscreen-image-carousel.d.ts +1 -1
- package/fullscreen-image-carousel/fullscreen-image-carousel.js +1 -1
- package/fullscreen-image-carousel/fullscreen-image-carousel.js.map +1 -1
- package/fullscreen-image-carousel/fullscreen-image-carousel.style.d.ts +7 -0
- package/fullscreen-image-carousel/fullscreen-image-carousel.style.js +21 -21
- package/fullscreen-image-carousel/fullscreen-image-carousel.style.js.map +1 -1
- package/fullscreen-image-carousel/types.d.ts +16 -0
- package/input-group/input-group-list-addon.js +1 -1
- package/input-group/input-group-list-addon.js.map +1 -1
- package/input-multi-select/types.d.ts +1 -1
- package/input-range-select/input-range-select.d.ts +1 -1
- package/input-range-select/input-range-select.js +1 -1
- package/input-range-select/input-range-select.js.map +1 -1
- package/input-select/input-select.d.ts +1 -1
- package/input-select/input-select.js +1 -1
- package/input-select/input-select.js.map +1 -1
- package/link-list/internal-types.d.ts +3 -3
- package/navbar/menu.d.ts +2 -1
- package/navbar/menu.js +1 -1
- package/navbar/menu.js.map +1 -1
- package/navbar/menu.styles.js +3 -3
- package/navbar/menu.styles.js.map +1 -1
- package/navbar/navbar-items.js +1 -1
- package/navbar/navbar-items.js.map +1 -1
- package/navbar/navbar-items.styles.d.ts +8 -8
- package/navbar/navbar-items.styles.js +31 -32
- package/navbar/navbar-items.styles.js.map +1 -1
- package/otp-verification/thumbnail/email-thumbnail.js.map +1 -1
- package/otp-verification/thumbnail/phone-thumbnail.js.map +1 -1
- package/package.json +1 -1
- package/shared/dropdown-list/dropdown-list.js +1 -1
- package/shared/dropdown-list/dropdown-list.js.map +1 -1
- package/shared/dropdown-list/types.d.ts +4 -1
- package/sidenav/sidenav-item.js +1 -1
- package/sidenav/sidenav-item.js.map +1 -1
- package/tab/tab-context-provider.d.ts +5 -0
- package/tab/tab-context-provider.js +2 -0
- package/tab/tab-context-provider.js.map +1 -0
- package/tab/tab-context.d.ts +5 -0
- package/tab/tab-context.js +1 -1
- package/tab/tab-context.js.map +1 -1
- package/tab/tab-item.js +1 -1
- package/tab/tab-item.js.map +1 -1
- package/tab/tab-link-chain.js +1 -1
- package/tab/tab-link-chain.js.map +1 -1
- package/tab/tab-list-item.d.ts +5 -0
- package/tab/tab-list-item.js +2 -0
- package/tab/tab-list-item.js.map +1 -0
- package/tab/tab-list.d.ts +5 -0
- package/tab/tab-list.js +2 -0
- package/tab/tab-list.js.map +1 -0
- package/tab/tab-panel.d.ts +5 -0
- package/tab/tab-panel.js +2 -0
- package/tab/tab-panel.js.map +1 -0
- package/tab/tab.d.ts +31 -0
- package/tab/tab.js +1 -1
- package/tab/tab.js.map +1 -1
- package/tab/types.d.ts +83 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useSpring as i}from"@react-spring/web";import{forwardRef as
|
|
1
|
+
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useSpring as i}from"@react-spring/web";import{forwardRef as n,useRef as a,useContext as l,useState as r,useImperativeHandle as d,useEffect as o}from"react";import{useResizeDetector as s}from"../external/react-resize-detector/build/index.esm.js";import{inertValue as c}from"../shared/accessibility/index.js";import"../util/calendar-helper.js";import"../util/date-helper.js";import"../util/date-input-helper.js";import{useId as p}from"../util/simple-id-generator.js";import"../util/string-helper.js";import"@react-aria/live-announcer";import{AccordionContext as m}from"./accordion-context.js";import{Container as u,ExpandCollapseButton as h,IconContainer as x,ChevronIcon as f,Expandable as g,ContentContainer as j,Title as $}from"./accordion-item.style.js";const b=n((function({title:n,children:b,type:v="default",collapsible:y=!0,className:C,id:D,expanded:E,onExpandChange:I,"data-testid":N="accordion-item"},S){var k;const w=a(null),{expandAll:z,itemHeadingLevel:A,onItemStateChange:H,itemState:L,onItemDeregister:O}=l(m),[q,B]=r(!1),F=p(),G=`${F}-content`,{height:J,ref:K}=s(),M=void 0!==I,P=M?!y||null!=E&&E:null!==(k=L[F])&&void 0!==k?k:!y||(null!=E?E:z);d(S,(()=>Object.assign(w.current,{expand(){M?null==I||I(!0):H(F,!0)},collapse(){M?null==I||I(!1):H(F,!1)},isExpanded:()=>P})),[P]),o((()=>(B(!0),()=>null==O?void 0:O(F))),[]),o((()=>{M&&H(F,!y||null!=E&&E)}),[E,y]),o((()=>{M||H(F,!y||(null!=E?E:z))}),[z,E,y]),o((()=>{if(!M||!q)return;const e=!y||z;e!==E&&(null==I||I(e))}),[z]);const Q=e=>{e.preventDefault(),M?null==I||I(!P):H(F,!P)},R={height:P?J:0},T=i(R);return e(u,{"data-testid":N,className:C,id:D,$expanded:P,ref:w,children:[t("h3",{"aria-level":A,children:e(h,{"data-testid":`${N}-expand-collapse-button`,onClick:y?Q:void 0,$expanded:P,$collapsible:y,"aria-controls":G,"aria-disabled":!y,"aria-expanded":P,children:["string"!=typeof n?n:t($,{"data-testid":`${N}-title`,$type:v,$isCollapsed:P,children:n}),y&&t(x,{"data-testid":`${N}-expand-collapse-icon`,$expanded:P,children:t(f,{})})]})}),t(g,{id:G,style:q?T:R,"data-testid":`${N}-expandable-container`,inert:c(!P),children:t(j,{ref:K,"data-testid":"content-container",children:b})})]})}));export{b as AccordionItem};
|
|
2
2
|
//# sourceMappingURL=accordion-item.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion-item.js","sources":["../../src/accordion/accordion-item.tsx"],"sourcesContent":["import { useSpring } from \"@react-spring/web\";\nimport React, {\n forwardRef,\n useContext,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { useResizeDetector } from \"react-resize-detector\";\nimport { inertValue } from \"../shared/accessibility\";\nimport { useId } from \"../util\";\nimport { AccordionContext } from \"./accordion-context\";\nimport {\n ChevronIcon,\n Container,\n ContentContainer,\n ExpandCollapseButton,\n Expandable,\n IconContainer,\n Title,\n} from \"./accordion-item.style\";\nimport {\n AccordionItemApi,\n AccordionItemHandle,\n AccordionItemProps,\n} from \"./types\";\n\nfunction Component(\n {\n title,\n children,\n type = \"default\",\n collapsible = true,\n className,\n id,\n expanded: expandedControlled,\n \"data-testid\": testId = \"accordion-item\",\n }: AccordionItemProps,\n ref: React.Ref<AccordionItemHandle>\n) {\n // =========================================================================\n // CONST, STATE, REF\n // =========================================================================\n const elementRef = useRef<HTMLDivElement>(null);\n const {\n expandAll,\n itemHeadingLevel,\n onItemStateChange,\n itemState,\n onItemDeregister,\n } = useContext(AccordionContext);\n const [hasFirstLoad, setHasFirstLoad] = useState<boolean>(false);\n const internalId = useId();\n const contentId = `${internalId}-content`;\n const resizeDetector = useResizeDetector();\n const expanded =\n itemState[internalId] ??\n (collapsible ? expandedControlled ?? expandAll : true); // the initial value\n\n useImperativeHandle(\n ref,\n () =>\n Object.assign<HTMLDivElement, AccordionItemApi>(\n elementRef.current!,\n {\n expand(): void {\n onItemStateChange(internalId, true);\n },\n collapse(): void {\n onItemStateChange(internalId, false);\n },\n isExpanded() {\n return expanded;\n },\n }\n ),\n [expanded]\n );\n\n // =========================================================================\n // EFFECTS\n // =========================================================================\n useEffect(() => {\n setHasFirstLoad(true);\n\n return () => onItemDeregister?.(internalId);\n }, []);\n\n useEffect(() => {\n onItemStateChange(\n internalId,\n collapsible ? expandedControlled ?? expandAll : true\n );\n }, [expandAll, expandedControlled, collapsible]);\n\n // =========================================================================\n // EVENT HANDLERS\n // =========================================================================\n\n const handleExpandCollapseClick = (event: React.MouseEvent) => {\n event.preventDefault();\n onItemStateChange(internalId, !expanded);\n };\n\n // =========================================================================\n // RENDER FUNCTIONS\n // =========================================================================\n // React spring animation configuration\n const resizeHeight = {\n height: expanded ? resizeDetector.height : 0,\n };\n const expandableStyles = useSpring(resizeHeight);\n\n const renderContent = () => {\n return (\n <Expandable\n id={contentId}\n style={hasFirstLoad ? expandableStyles : resizeHeight}\n data-testid={`${testId}-expandable-container`}\n inert={inertValue(!expanded)}\n >\n <ContentContainer\n ref={resizeDetector.ref}\n data-testid=\"content-container\"\n >\n {children}\n </ContentContainer>\n </Expandable>\n );\n };\n\n const renderTitleText = () => {\n if (typeof title !== \"string\") {\n return title;\n }\n\n return (\n <Title\n data-testid={`${testId}-title`}\n $type={type}\n $isCollapsed={expanded}\n >\n {title}\n </Title>\n );\n };\n\n const renderTitle = () => {\n return (\n <h3 aria-level={itemHeadingLevel}>\n <ExpandCollapseButton\n data-testid={`${testId}-expand-collapse-button`}\n onClick={\n collapsible ? handleExpandCollapseClick : undefined\n }\n $expanded={expanded}\n $collapsible={collapsible}\n aria-controls={contentId}\n aria-disabled={!collapsible} // remains focusable\n aria-expanded={expanded}\n >\n {renderTitleText()}\n {collapsible && (\n <IconContainer\n data-testid={`${testId}-expand-collapse-icon`}\n $expanded={expanded}\n >\n <ChevronIcon />\n </IconContainer>\n )}\n </ExpandCollapseButton>\n </h3>\n );\n };\n\n return (\n <Container\n data-testid={testId}\n className={className}\n id={id}\n $expanded={expanded}\n ref={elementRef}\n >\n {renderTitle()}\n {renderContent()}\n </Container>\n );\n}\n\nexport const AccordionItem = forwardRef<\n AccordionItemHandle,\n AccordionItemProps\n>(Component);\n"],"names":["AccordionItem","forwardRef","title","children","type","collapsible","className","id","expanded","expandedControlled","testId","ref","elementRef","useRef","expandAll","itemHeadingLevel","onItemStateChange","itemState","onItemDeregister","useContext","AccordionContext","hasFirstLoad","setHasFirstLoad","useState","internalId","useId","contentId","resizeDetector","useResizeDetector","_a","useImperativeHandle","Object","assign","current","expand","collapse","isExpanded","useEffect","handleExpandCollapseClick","event","preventDefault","resizeHeight","height","expandableStyles","useSpring","_jsxs","Container","$expanded","_jsx","ExpandCollapseButton","onClick","undefined","$collapsible","Title","$type","IconContainer","ChevronIcon","Expandable","style","inert","inertValue","ContentContainer"],"mappings":"mzBA8LaA,EAAgBC,GAlK7B,UACIC,MACIA,EAAKC,SACLA,EAAQC,KACRA,EAAO,UAASC,YAChBA,GAAc,EAAIC,UAClBA,EAASC,GACTA,EACAC,SAAUC,EACV,cAAeC,EAAS,kBAE5BC,SAKA,MAAMC,EAAaC,EAAuB,OACpCC,UACFA,EAASC,iBACTA,EAAgBC,kBAChBA,EAAiBC,UACjBA,EAASC,iBACTA,GACAC,EAAWC,IACRC,EAAcC,GAAmBC,GAAkB,GACpDC,EAAaC,IACbC,EAAY,GAAGF,YACfG,EAAiBC,IACjBpB,EACmB,QAArBqB,EAAAZ,EAAUO,UAAW,IAAAK,EAAAA,GACpBxB,IAAcI,QAAAA,EAAsBK,GAEzCgB,EACInB,GACA,IACIoB,OAAOC,OACHpB,EAAWqB,QACX,CACI,MAAAC,GACIlB,EAAkBQ,GAAY,EAClC,EACA,QAAAW,GACInB,EAAkBQ,GAAY,EAClC,EACAY,WAAU,IACC5B,KAIvB,CAACA,IAML6B,GAAU,KACNf,GAAgB,GAET,IAAMJ,aAAgB,EAAhBA,EAAmBM,KACjC,IAEHa,GAAU,KACNrB,EACIQ,GACAnB,IAAcI,QAAAA,EAAsBK,GACvC,GACF,CAACA,EAAWL,EAAoBJ,IAMnC,MAAMiC,EAA6BC,IAC/BA,EAAMC,iBACNxB,EAAkBQ,GAAahB,EAAS,EAOtCiC,EAAe,CACjBC,OAAQlC,EAAWmB,EAAee,OAAS,GAEzCC,EAAmBC,EAAUH,GAgEnC,OACII,EAACC,EAAS,CAAA,cACOpC,EACbJ,UAAWA,EACXC,GAAIA,EAAEwC,UACKvC,EACXG,IAAKC,EAAUT,SAAA,CAhCf6C,EAAA,KAAA,CAAA,aAAgBjC,EAAgBZ,SAC5B0C,EAACI,EAAoB,CAAA,cACJ,GAAGvC,2BAChBwC,QACI7C,EAAciC,OAA4Ba,EAASJ,UAE5CvC,EAAQ4C,aACL/C,EAAW,gBACVqB,mBACCrB,EAAW,gBACZG,EAAQL,SAAA,CA3Bd,iBAAVD,EACAA,EAIP8C,EAACK,EAAK,CAAA,cACW,GAAG3C,UAAc4C,MACvBlD,eACOI,EAAQL,SAErBD,IAoBIG,GACG2C,EAACO,EAAa,CAAA,cACG,GAAG7C,yBAA6BqC,UAClCvC,EAAQL,SAEnB6C,EAACQ,EAAW,CAAA,UApD5BR,EAACS,EAAU,CACPlD,GAAImB,EACJgC,MAAOrC,EAAesB,EAAmBF,EAAY,cACxC,GAAG/B,yBAChBiD,MAAOC,GAAYpD,GAASL,SAE5B6C,EAACa,EAAgB,CACblD,IAAKgB,EAAehB,IAAG,cACX,6BAEXR,QA8DrB"}
|
|
1
|
+
{"version":3,"file":"accordion-item.js","sources":["../../src/accordion/accordion-item.tsx"],"sourcesContent":["import { useSpring } from \"@react-spring/web\";\nimport React, {\n forwardRef,\n useContext,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { useResizeDetector } from \"react-resize-detector\";\nimport { inertValue } from \"../shared/accessibility\";\nimport { useId } from \"../util\";\nimport { AccordionContext } from \"./accordion-context\";\nimport {\n ChevronIcon,\n Container,\n ContentContainer,\n ExpandCollapseButton,\n Expandable,\n IconContainer,\n Title,\n} from \"./accordion-item.style\";\nimport {\n AccordionItemApi,\n AccordionItemHandle,\n AccordionItemProps,\n} from \"./types\";\n\nfunction Component(\n {\n title,\n children,\n type = \"default\",\n collapsible = true,\n className,\n id,\n expanded: expandedControlled,\n onExpandChange,\n \"data-testid\": testId = \"accordion-item\",\n }: AccordionItemProps,\n ref: React.Ref<AccordionItemHandle>\n) {\n // =========================================================================\n // CONST, STATE, REF\n // =========================================================================\n const elementRef = useRef<HTMLDivElement>(null);\n const {\n expandAll,\n itemHeadingLevel,\n onItemStateChange,\n itemState,\n onItemDeregister,\n } = useContext(AccordionContext);\n const [hasFirstLoad, setHasFirstLoad] = useState<boolean>(false);\n const internalId = useId();\n const contentId = `${internalId}-content`;\n const { height, ref: resizeDetectorRef } = useResizeDetector();\n const isControlled = onExpandChange !== undefined;\n const expanded = isControlled\n ? collapsible\n ? expandedControlled ?? false\n : true\n : itemState[internalId] ??\n (collapsible ? expandedControlled ?? expandAll : true);\n\n useImperativeHandle(\n ref,\n () =>\n Object.assign<HTMLDivElement, AccordionItemApi>(\n elementRef.current!,\n {\n expand(): void {\n if (isControlled) {\n onExpandChange?.(true);\n } else {\n onItemStateChange(internalId, true);\n }\n },\n collapse(): void {\n if (isControlled) {\n onExpandChange?.(false);\n } else {\n onItemStateChange(internalId, false);\n }\n },\n isExpanded() {\n return expanded;\n },\n }\n ),\n [expanded]\n );\n\n // =========================================================================\n // EFFECTS\n // =========================================================================\n useEffect(() => {\n setHasFirstLoad(true);\n\n return () => onItemDeregister?.(internalId);\n }, []);\n\n // Controlled mode: keep parent itemState in sync so \"Show all\"/\"Hide all\" label stays accurate\n useEffect(() => {\n if (isControlled) {\n onItemStateChange(\n internalId,\n collapsible ? expandedControlled ?? false : true\n );\n }\n }, [expandedControlled, collapsible]);\n\n // Uncontrolled mode: sync state when expandAll button or the hint prop changes\n useEffect(() => {\n if (!isControlled) {\n onItemStateChange(\n internalId,\n collapsible ? expandedControlled ?? expandAll : true\n );\n }\n }, [expandAll, expandedControlled, collapsible]);\n\n // Controlled mode: forward expandAll button changes to the caller\n useEffect(() => {\n if (!isControlled || !hasFirstLoad) return;\n const next = collapsible ? expandAll : true;\n if (next !== expandedControlled) {\n onExpandChange?.(next);\n }\n }, [expandAll]);\n\n // =========================================================================\n // EVENT HANDLERS\n // =========================================================================\n\n const handleExpandCollapseClick = (event: React.MouseEvent) => {\n event.preventDefault();\n if (isControlled) {\n onExpandChange?.(!expanded);\n } else {\n onItemStateChange(internalId, !expanded);\n }\n };\n\n // =========================================================================\n // RENDER FUNCTIONS\n // =========================================================================\n // React spring animation configuration\n const resizeHeight = {\n height: expanded ? height : 0,\n };\n const expandableStyles = useSpring(resizeHeight);\n\n const renderContent = () => {\n return (\n <Expandable\n id={contentId}\n style={hasFirstLoad ? expandableStyles : resizeHeight}\n data-testid={`${testId}-expandable-container`}\n inert={inertValue(!expanded)}\n >\n <ContentContainer\n ref={resizeDetectorRef}\n data-testid=\"content-container\"\n >\n {children}\n </ContentContainer>\n </Expandable>\n );\n };\n\n const renderTitleText = () => {\n if (typeof title !== \"string\") {\n return title;\n }\n\n return (\n <Title\n data-testid={`${testId}-title`}\n $type={type}\n $isCollapsed={expanded}\n >\n {title}\n </Title>\n );\n };\n\n const renderTitle = () => {\n return (\n <h3 aria-level={itemHeadingLevel}>\n <ExpandCollapseButton\n data-testid={`${testId}-expand-collapse-button`}\n onClick={\n collapsible ? handleExpandCollapseClick : undefined\n }\n $expanded={expanded}\n $collapsible={collapsible}\n aria-controls={contentId}\n aria-disabled={!collapsible} // remains focusable\n aria-expanded={expanded}\n >\n {renderTitleText()}\n {collapsible && (\n <IconContainer\n data-testid={`${testId}-expand-collapse-icon`}\n $expanded={expanded}\n >\n <ChevronIcon />\n </IconContainer>\n )}\n </ExpandCollapseButton>\n </h3>\n );\n };\n\n return (\n <Container\n data-testid={testId}\n className={className}\n id={id}\n $expanded={expanded}\n ref={elementRef}\n >\n {renderTitle()}\n {renderContent()}\n </Container>\n );\n}\n\nexport const AccordionItem = forwardRef<\n AccordionItemHandle,\n AccordionItemProps\n>(Component);\n"],"names":["AccordionItem","forwardRef","title","children","type","collapsible","className","id","expanded","expandedControlled","onExpandChange","testId","ref","elementRef","useRef","expandAll","itemHeadingLevel","onItemStateChange","itemState","onItemDeregister","useContext","AccordionContext","hasFirstLoad","setHasFirstLoad","useState","internalId","useId","contentId","height","resizeDetectorRef","useResizeDetector","isControlled","undefined","_a","useImperativeHandle","Object","assign","current","expand","collapse","isExpanded","useEffect","next","handleExpandCollapseClick","event","preventDefault","resizeHeight","expandableStyles","useSpring","_jsxs","Container","$expanded","_jsx","ExpandCollapseButton","onClick","$collapsible","Title","$type","IconContainer","ChevronIcon","Expandable","style","inert","inertValue","ContentContainer"],"mappings":"mzBAqOaA,EAAgBC,GAzM7B,UACIC,MACIA,EAAKC,SACLA,EAAQC,KACRA,EAAO,UAASC,YAChBA,GAAc,EAAIC,UAClBA,EAASC,GACTA,EACAC,SAAUC,EAAkBC,eAC5BA,EACA,cAAeC,EAAS,kBAE5BC,SAKA,MAAMC,EAAaC,EAAuB,OACpCC,UACFA,EAASC,iBACTA,EAAgBC,kBAChBA,EAAiBC,UACjBA,EAASC,iBACTA,GACAC,EAAWC,IACRC,EAAcC,GAAmBC,GAAkB,GACpDC,EAAaC,IACbC,EAAY,GAAGF,aACfG,OAAEA,EAAQhB,IAAKiB,GAAsBC,IACrCC,OAAkCC,IAAnBtB,EACfF,EAAWuB,GACX1B,GACII,SAAAA,EAEiB,QAArBwB,EAAAf,EAAUO,UAAW,IAAAQ,EAAAA,GACpB5B,IAAcI,QAAAA,EAAsBM,GAE3CmB,EACItB,GACA,IACIuB,OAAOC,OACHvB,EAAWwB,QACX,CACI,MAAAC,GACQP,EACArB,SAAAA,GAAiB,GAEjBO,EAAkBQ,GAAY,EAEtC,EACA,QAAAc,GACQR,EACArB,SAAAA,GAAiB,GAEjBO,EAAkBQ,GAAY,EAEtC,EACAe,WAAU,IACChC,KAIvB,CAACA,IAMLiC,GAAU,KACNlB,GAAgB,GAET,IAAMJ,aAAgB,EAAhBA,EAAmBM,KACjC,IAGHgB,GAAU,KACFV,GACAd,EACIQ,GACApB,GAAcI,SAAAA,EAEtB,GACD,CAACA,EAAoBJ,IAGxBoC,GAAU,KACDV,GACDd,EACIQ,GACApB,IAAcI,QAAAA,EAAsBM,GAE5C,GACD,CAACA,EAAWN,EAAoBJ,IAGnCoC,GAAU,KACN,IAAKV,IAAiBT,EAAc,OACpC,MAAMoB,GAAOrC,GAAcU,EACvB2B,IAASjC,IACTC,SAAAA,EAAiBgC,GACrB,GACD,CAAC3B,IAMJ,MAAM4B,EAA6BC,IAC/BA,EAAMC,iBACFd,EACArB,SAAAA,GAAkBF,GAElBS,EAAkBQ,GAAajB,EACnC,EAOEsC,EAAe,CACjBlB,OAAQpB,EAAWoB,EAAS,GAE1BmB,EAAmBC,EAAUF,GAgEnC,OACIG,EAACC,EAAS,CAAA,cACOvC,EACbL,UAAWA,EACXC,GAAIA,EAAE4C,UACK3C,EACXI,IAAKC,EAAUV,SAAA,CAhCfiD,EAAA,KAAA,CAAA,aAAgBpC,EAAgBb,SAC5B8C,EAACI,EAAoB,CAAA,cACJ,GAAG1C,2BAChB2C,QACIjD,EAAcsC,OAA4BX,EAASmB,UAE5C3C,EAAQ+C,aACLlD,EAAW,gBACVsB,mBACCtB,EAAW,gBACZG,EAAQL,SAAA,CA3Bd,iBAAVD,EACAA,EAIPkD,EAACI,EAAK,CAAA,cACW,GAAG7C,UAAc8C,MACvBrD,eACOI,EAAQL,SAErBD,IAoBIG,GACG+C,EAACM,EAAa,CAAA,cACG,GAAG/C,yBAA6BwC,UAClC3C,EAAQL,SAEnBiD,EAACO,EAAW,CAAA,UApD5BP,EAACQ,EAAU,CACPrD,GAAIoB,EACJkC,MAAOvC,EAAeyB,EAAmBD,gBAC5B,GAAGnC,yBAChBmD,MAAOC,GAAYvD,YAEnB4C,EAACY,GACGpD,IAAKiB,EAAiB,cACV,6BAEX1B,QA8DrB"}
|
package/accordion/types.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
export interface AccordionProps {
|
|
2
2
|
children: JSX.Element | JSX.Element[];
|
|
3
|
-
|
|
3
|
+
/** Section heading rendered above the item list. Visually hidden on mobile unless `showTitleInMobile` is true. */
|
|
4
|
+
title?: string | JSX.Element | undefined;
|
|
5
|
+
/**
|
|
6
|
+
* Renders the "Show all" / "Hide all" toggle button.
|
|
7
|
+
*
|
|
8
|
+
* @default true
|
|
9
|
+
*/
|
|
4
10
|
enableExpandAll?: boolean | undefined;
|
|
5
11
|
initialDisplay?: "collapse-all" | "expand-all" | undefined;
|
|
6
12
|
showTitleInMobile?: boolean | undefined;
|
|
@@ -24,6 +30,13 @@ export interface AccordionItemProps {
|
|
|
24
30
|
className?: string | undefined;
|
|
25
31
|
type?: AccordionItemType | undefined;
|
|
26
32
|
collapsible?: boolean | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Called when the user toggles this item or the parent "Show all" / "Hide all"
|
|
35
|
+
* button fires. When provided, the item enters **controlled mode** — the caller
|
|
36
|
+
* must update the `expanded` prop in response. Without this prop, the item
|
|
37
|
+
* manages its own state internally (uncontrolled mode).
|
|
38
|
+
*/
|
|
39
|
+
onExpandChange?: ((expanded: boolean) => void) | undefined;
|
|
27
40
|
}
|
|
28
41
|
export interface AccordionItemApi {
|
|
29
42
|
expand: () => void;
|
package/button/button.style.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import o,{css as r}from"styled-components";import{ComponentLoadingSpinner as e}from"../shared/component-loading-spinner/component-loading-spinner.js";import{Spacing as t,Border as n,Motion as a,Colour as i,MediaQuery as d,Font as l}from"../theme/index.js";import{ThemeButton as c}from"../theme/components/theme-helper.js";const u=o.button`
|
|
2
2
|
padding: ${t["spacing-8"]} ${t["spacing-16"]};
|
|
3
3
|
min-width: 4rem;
|
|
4
4
|
border: ${n["width-010"]} ${n.solid} transparent;
|
|
@@ -12,11 +12,11 @@ import r,{css as o}from"styled-components";import{ComponentLoadingSpinner as e}f
|
|
|
12
12
|
// -----------------------------------------------------------------------------
|
|
13
13
|
// BUTTON STYLE + TEXT COLOR
|
|
14
14
|
// -----------------------------------------------------------------------------
|
|
15
|
-
${
|
|
15
|
+
${o=>{switch(o.$buttonStyle){case"secondary":return r`
|
|
16
16
|
background-color: ${i.bg};
|
|
17
|
-
border-color: ${
|
|
17
|
+
border-color: ${o.$buttonIsDanger?i["border-error-strong"]:c["button-secondary-colour-border"]};
|
|
18
18
|
|
|
19
|
-
color: ${
|
|
19
|
+
color: ${o.$buttonIsDanger?i["text-error"]:c["button-secondary-colour-text"]};
|
|
20
20
|
|
|
21
21
|
&:hover,
|
|
22
22
|
&:active {
|
|
@@ -24,11 +24,11 @@ import r,{css as o}from"styled-components";import{ComponentLoadingSpinner as e}f
|
|
|
24
24
|
background-color: ${i["bg-hover-neutral"]};
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
`;case"light":return
|
|
27
|
+
`;case"light":return r`
|
|
28
28
|
background-color: ${i.bg};
|
|
29
29
|
border-color: ${i.border};
|
|
30
30
|
|
|
31
|
-
color: ${
|
|
31
|
+
color: ${o.$buttonIsDanger?i["text-error"]:c["button-light-colour-text"]};
|
|
32
32
|
|
|
33
33
|
&:hover,
|
|
34
34
|
&:active {
|
|
@@ -36,17 +36,17 @@ import r,{css as o}from"styled-components";import{ComponentLoadingSpinner as e}f
|
|
|
36
36
|
background-color: ${i["bg-hover-neutral"]};
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
`;case"link":return
|
|
39
|
+
`;case"link":return r`
|
|
40
40
|
background-color: transparent;
|
|
41
41
|
|
|
42
|
-
color: ${
|
|
42
|
+
color: ${o.$buttonIsDanger?i["text-error"]:c["button-link-colour-text"]};
|
|
43
43
|
&:hover,
|
|
44
44
|
&:active {
|
|
45
45
|
@media (pointer: fine) {
|
|
46
46
|
background-color: ${i["bg-hover-neutral"]};
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
`;case"disabled":return
|
|
49
|
+
`;case"disabled":return r`
|
|
50
50
|
background-color: ${i["bg-disabled"]};
|
|
51
51
|
|
|
52
52
|
cursor: not-allowed;
|
|
@@ -56,8 +56,8 @@ import r,{css as o}from"styled-components";import{ComponentLoadingSpinner as e}f
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
color: ${i["text-disabled"]};
|
|
59
|
-
`;default:return
|
|
60
|
-
background-color: ${
|
|
59
|
+
`;default:return r`
|
|
60
|
+
background-color: ${o.$buttonIsDanger?i["bg-error-strong"]:c["button-default-colour-bg"]};
|
|
61
61
|
|
|
62
62
|
${d.MaxWidth.sm} {
|
|
63
63
|
width: 100%;
|
|
@@ -68,7 +68,7 @@ import r,{css as o}from"styled-components";import{ComponentLoadingSpinner as e}f
|
|
|
68
68
|
&:hover,
|
|
69
69
|
&:active {
|
|
70
70
|
@media (pointer: fine) {
|
|
71
|
-
background-color: ${
|
|
71
|
+
background-color: ${o.$buttonIsDanger?i["bg-error-strong-hover"]:c["button-default-colour-bg-hover"]};
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
`}}}
|
|
@@ -76,29 +76,30 @@ import r,{css as o}from"styled-components";import{ComponentLoadingSpinner as e}f
|
|
|
76
76
|
// -----------------------------------------------------------------------------
|
|
77
77
|
// BUTTON SIZE + TEXT SIZE
|
|
78
78
|
// -----------------------------------------------------------------------------
|
|
79
|
-
${
|
|
79
|
+
${o=>{switch(o.$buttonSizeStyle){case"small":return r`
|
|
80
80
|
height: 2.5rem;
|
|
81
81
|
${l["body-md-semibold"]}
|
|
82
82
|
|
|
83
83
|
${d.MaxWidth.xxs} {
|
|
84
84
|
height: auto;
|
|
85
85
|
}
|
|
86
|
-
`;case"large":return
|
|
86
|
+
`;case"large":return r`
|
|
87
87
|
height: 4rem;
|
|
88
|
-
${l["heading-md-semibold"]}
|
|
88
|
+
${l["heading-md-semibold"]};
|
|
89
|
+
font-family: ${l.Spec["body-font-family"]};
|
|
89
90
|
|
|
90
91
|
${d.MaxWidth.xxs} {
|
|
91
92
|
height: auto;
|
|
92
93
|
}
|
|
93
|
-
`;default:return
|
|
94
|
+
`;default:return r`
|
|
94
95
|
height: 3rem;
|
|
95
|
-
${l["
|
|
96
|
+
${l["body-baseline-semibold"]}
|
|
96
97
|
|
|
97
98
|
${d.MaxWidth.xxs} {
|
|
98
99
|
height: auto;
|
|
99
100
|
}
|
|
100
101
|
`}}}
|
|
101
|
-
`,s=
|
|
102
|
-
margin-right: ${
|
|
102
|
+
`,s=o(e)`
|
|
103
|
+
margin-right: ${o=>o.$hasChildren?"0.5rem":"0"};
|
|
103
104
|
`;export{u as Main,s as Spinner};
|
|
104
105
|
//# sourceMappingURL=button.style.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.style.js","sources":["../../src/button/button.style.tsx"],"sourcesContent":["import styled, { css } from \"styled-components\";\nimport { ComponentLoadingSpinner } from \"../shared/component-loading-spinner\";\nimport { Border, Colour, Font, MediaQuery, Motion, Spacing } from \"../theme\";\nimport { ThemeButton } from \"../theme/components/theme-helper\";\n\nexport type MainButtonStyle =\n | \"default\"\n | \"disabled\"\n | \"secondary\"\n | \"light\"\n | \"link\";\n\nexport type MainButtonSize = \"default\" | \"small\" | \"large\";\n\nexport interface MainStyleProps {\n $buttonStyle: MainButtonStyle;\n $buttonSizeStyle?: MainButtonSize | undefined;\n $buttonIsDanger?: boolean;\n}\n\nexport const Main = styled.button<MainStyleProps>`\n padding: ${Spacing[\"spacing-8\"]} ${Spacing[\"spacing-16\"]};\n min-width: 4rem;\n border: ${Border[\"width-010\"]} ${Border[\"solid\"]} transparent;\n transition: all ${Motion[\"duration-250\"]} ${Motion[\"ease-default\"]};\n border-radius: ${ThemeButton[\"button-radius\"]};\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n\n // -----------------------------------------------------------------------------\n // BUTTON STYLE + TEXT COLOR\n // -----------------------------------------------------------------------------\n ${(props) => {\n switch (props.$buttonStyle) {\n case \"secondary\":\n return css`\n background-color: ${Colour.bg};\n border-color: ${props.$buttonIsDanger\n ? Colour[\"border-error-strong\"]\n : ThemeButton[\"button-secondary-colour-border\"]};\n\n color: ${props.$buttonIsDanger\n ? Colour[\"text-error\"]\n : ThemeButton[\"button-secondary-colour-text\"]};\n\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${Colour[\"bg-hover-neutral\"]};\n }\n }\n `;\n case \"light\":\n return css`\n background-color: ${Colour.bg};\n border-color: ${Colour.border};\n\n color: ${props.$buttonIsDanger\n ? Colour[\"text-error\"]\n : ThemeButton[\"button-light-colour-text\"]};\n\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${Colour[\"bg-hover-neutral\"]};\n }\n }\n `;\n\n case \"link\":\n return css`\n background-color: transparent;\n\n color: ${props.$buttonIsDanger\n ? Colour[\"text-error\"]\n : ThemeButton[\"button-link-colour-text\"]};\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${Colour[\"bg-hover-neutral\"]};\n }\n }\n `;\n case \"disabled\":\n return css`\n background-color: ${Colour[\"bg-disabled\"]};\n\n cursor: not-allowed;\n\n &:hover {\n box-shadow: none;\n }\n\n color: ${Colour[\"text-disabled\"]};\n `;\n default:\n return css`\n background-color: ${props.$buttonIsDanger\n ? Colour[\"bg-error-strong\"]\n : ThemeButton[\"button-default-colour-bg\"]};\n\n ${MediaQuery.MaxWidth.sm} {\n width: 100%;\n }\n\n color: ${ThemeButton[\"button-default-colour-text\"]};\n\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${props.$buttonIsDanger\n ? Colour[\"bg-error-strong-hover\"]\n : ThemeButton[\n \"button-default-colour-bg-hover\"\n ]};\n }\n }\n `;\n }\n }}\n\n // -----------------------------------------------------------------------------\n\t// BUTTON SIZE + TEXT SIZE\n\t// -----------------------------------------------------------------------------\n\t${(props) => {\n switch (props.$buttonSizeStyle) {\n case \"small\":\n return css`\n height: 2.5rem;\n ${Font[\"body-md-semibold\"]}\n\n ${MediaQuery.MaxWidth.xxs} {\n height: auto;\n }\n `;\n\n case \"large\":\n return css`\n height: 4rem;\n ${Font[\"heading-md-semibold\"]}\n\n ${MediaQuery.MaxWidth.xxs} {\n height: auto;\n }\n `;\n\n default:\n return css`\n height: 3rem;\n ${Font[\"
|
|
1
|
+
{"version":3,"file":"button.style.js","sources":["../../src/button/button.style.tsx"],"sourcesContent":["import styled, { css } from \"styled-components\";\nimport { ComponentLoadingSpinner } from \"../shared/component-loading-spinner\";\nimport { Border, Colour, Font, MediaQuery, Motion, Spacing } from \"../theme\";\nimport { ThemeButton } from \"../theme/components/theme-helper\";\n\nexport type MainButtonStyle =\n | \"default\"\n | \"disabled\"\n | \"secondary\"\n | \"light\"\n | \"link\";\n\nexport type MainButtonSize = \"default\" | \"small\" | \"large\";\n\nexport interface MainStyleProps {\n $buttonStyle: MainButtonStyle;\n $buttonSizeStyle?: MainButtonSize | undefined;\n $buttonIsDanger?: boolean;\n}\n\nexport const Main = styled.button<MainStyleProps>`\n padding: ${Spacing[\"spacing-8\"]} ${Spacing[\"spacing-16\"]};\n min-width: 4rem;\n border: ${Border[\"width-010\"]} ${Border[\"solid\"]} transparent;\n transition: all ${Motion[\"duration-250\"]} ${Motion[\"ease-default\"]};\n border-radius: ${ThemeButton[\"button-radius\"]};\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n\n // -----------------------------------------------------------------------------\n // BUTTON STYLE + TEXT COLOR\n // -----------------------------------------------------------------------------\n ${(props) => {\n switch (props.$buttonStyle) {\n case \"secondary\":\n return css`\n background-color: ${Colour.bg};\n border-color: ${props.$buttonIsDanger\n ? Colour[\"border-error-strong\"]\n : ThemeButton[\"button-secondary-colour-border\"]};\n\n color: ${props.$buttonIsDanger\n ? Colour[\"text-error\"]\n : ThemeButton[\"button-secondary-colour-text\"]};\n\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${Colour[\"bg-hover-neutral\"]};\n }\n }\n `;\n case \"light\":\n return css`\n background-color: ${Colour.bg};\n border-color: ${Colour.border};\n\n color: ${props.$buttonIsDanger\n ? Colour[\"text-error\"]\n : ThemeButton[\"button-light-colour-text\"]};\n\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${Colour[\"bg-hover-neutral\"]};\n }\n }\n `;\n\n case \"link\":\n return css`\n background-color: transparent;\n\n color: ${props.$buttonIsDanger\n ? Colour[\"text-error\"]\n : ThemeButton[\"button-link-colour-text\"]};\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${Colour[\"bg-hover-neutral\"]};\n }\n }\n `;\n case \"disabled\":\n return css`\n background-color: ${Colour[\"bg-disabled\"]};\n\n cursor: not-allowed;\n\n &:hover {\n box-shadow: none;\n }\n\n color: ${Colour[\"text-disabled\"]};\n `;\n default:\n return css`\n background-color: ${props.$buttonIsDanger\n ? Colour[\"bg-error-strong\"]\n : ThemeButton[\"button-default-colour-bg\"]};\n\n ${MediaQuery.MaxWidth.sm} {\n width: 100%;\n }\n\n color: ${ThemeButton[\"button-default-colour-text\"]};\n\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${props.$buttonIsDanger\n ? Colour[\"bg-error-strong-hover\"]\n : ThemeButton[\n \"button-default-colour-bg-hover\"\n ]};\n }\n }\n `;\n }\n }}\n\n // -----------------------------------------------------------------------------\n\t// BUTTON SIZE + TEXT SIZE\n\t// -----------------------------------------------------------------------------\n\t${(props) => {\n switch (props.$buttonSizeStyle) {\n case \"small\":\n return css`\n height: 2.5rem;\n ${Font[\"body-md-semibold\"]}\n\n ${MediaQuery.MaxWidth.xxs} {\n height: auto;\n }\n `;\n\n case \"large\":\n return css`\n height: 4rem;\n ${Font[\"heading-md-semibold\"]};\n font-family: ${Font.Spec[\"body-font-family\"]};\n\n ${MediaQuery.MaxWidth.xxs} {\n height: auto;\n }\n `;\n\n default:\n return css`\n height: 3rem;\n ${Font[\"body-baseline-semibold\"]}\n\n ${MediaQuery.MaxWidth.xxs} {\n height: auto;\n }\n `;\n }\n }}\n`;\n\nexport const Spinner = styled(ComponentLoadingSpinner)<{\n $hasChildren: boolean;\n}>`\n margin-right: ${(props) => (props.$hasChildren ? \"0.5rem\" : \"0\")};\n`;\n"],"names":["Main","styled","button","Spacing","Border","Motion","ThemeButton","props","$buttonStyle","css","Colour","bg","$buttonIsDanger","border","MediaQuery","MaxWidth","sm","$buttonSizeStyle","Font","xxs","Spec","Spinner","ComponentLoadingSpinner","$hasChildren"],"mappings":"kUAoBO,MAAMA,EAAOC,EAAOC,MAAsB;eAClCC,EAAQ,gBAAgBA,EAAQ;;cAEjCC,EAAO,gBAAgBA,EAAc;sBAC7BC,EAAO,mBAAmBA,EAAO;qBAClCC,EAAY;;;;;;;;;MAS1BC,IACC,OAAQA,EAAMC,cACV,IAAK,YACD,OAAOC,CAAG;wCACcC,EAAOC;oCACXJ,EAAMK,gBAChBF,EAAO,uBACPJ,EAAY;;6BAETC,EAAMK,gBACTF,EAAO,cACPJ,EAAY;;;;;gDAKUI,EAAO;;;kBAI3C,IAAK,QACD,OAAOD,CAAG;wCACcC,EAAOC;oCACXD,EAAOG;;6BAEdN,EAAMK,gBACTF,EAAO,cACPJ,EAAY;;;;;gDAKUI,EAAO;;;kBAK3C,IAAK,OACD,OAAOD,CAAG;;;6BAGGF,EAAMK,gBACTF,EAAO,cACPJ,EAAY;;;;gDAIUI,EAAO;;;kBAI3C,IAAK,WACD,OAAOD,CAAG;wCACcC,EAAO;;;;;;;;6BAQlBA,EAAO;kBAExB,QACI,OAAOD,CAAG;wCACcF,EAAMK,gBACpBF,EAAO,mBACPJ,EAAY;;sBAEhBQ,EAAWC,SAASC;;;;6BAIbV,EAAY;;;;;gDAKOC,EAAMK,gBACpBF,EAAO,yBACPJ,EACI;;;;;;;;GAWlCC,IACI,OAAQA,EAAMU,kBACV,IAAK,QACD,OAAOR,CAAG;;sBAEJS,EAAK;;sBAELJ,EAAWC,SAASI;;;kBAK9B,IAAK,QACD,OAAOV,CAAG;;sBAEJS,EAAK;mCACQA,EAAKE,KAAK;;sBAEvBN,EAAWC,SAASI;;;kBAK9B,QACI,OAAOV,CAAG;;sBAEJS,EAAK;;sBAELJ,EAAWC,SAASI;;;;EAQ7BE,EAAUpB,EAAOqB,EAE5B;oBACmBf,GAAWA,EAAMgB,aAAe,SAAW;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),t=require("@react-spring/web"),
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("@react-spring/web"),n=require("react"),i=require("../external/react-resize-detector/build/index.esm.js"),r=require("../shared/accessibility/index.js");require("../util/calendar-helper.js"),require("../util/date-helper.js"),require("../util/date-input-helper.js");var a=require("../util/simple-id-generator.js");require("../util/string-helper.js"),require("@react-aria/live-announcer");var l=require("./accordion-context.js"),s=require("./accordion-item.style.js");const d=n.forwardRef((function({title:d,children:c,type:o="default",collapsible:u=!0,className:p,id:x,expanded:h,onExpandChange:f,"data-testid":j="accordion-item"},v){var m;const q=n.useRef(null),{expandAll:g,itemHeadingLevel:C,onItemStateChange:$,itemState:b,onItemDeregister:E}=n.useContext(l.AccordionContext),[I,y]=n.useState(!1),S=a.useId(),A=`${S}-content`,{height:D,ref:R}=i.useResizeDetector(),w=void 0!==f,z=w?!u||null!=h&&h:null!==(m=b[S])&&void 0!==m?m:!u||(null!=h?h:g);n.useImperativeHandle(v,(()=>Object.assign(q.current,{expand(){w?null==f||f(!0):$(S,!0)},collapse(){w?null==f||f(!1):$(S,!1)},isExpanded:()=>z})),[z]),n.useEffect((()=>(y(!0),()=>null==E?void 0:E(S))),[]),n.useEffect((()=>{w&&$(S,!u||null!=h&&h)}),[h,u]),n.useEffect((()=>{w||$(S,!u||(null!=h?h:g))}),[g,h,u]),n.useEffect((()=>{if(!w||!I)return;const e=!u||g;e!==h&&(null==f||f(e))}),[g]);const H=e=>{e.preventDefault(),w?null==f||f(!z):$(S,!z)},N={height:z?D:0},k=t.useSpring(N);return e.jsxs(s.Container,{"data-testid":j,className:p,id:x,$expanded:z,ref:q,children:[e.jsx("h3",{"aria-level":C,children:e.jsxs(s.ExpandCollapseButton,{"data-testid":`${j}-expand-collapse-button`,onClick:u?H:void 0,$expanded:z,$collapsible:u,"aria-controls":A,"aria-disabled":!u,"aria-expanded":z,children:["string"!=typeof d?d:e.jsx(s.Title,{"data-testid":`${j}-title`,$type:o,$isCollapsed:z,children:d}),u&&e.jsx(s.IconContainer,{"data-testid":`${j}-expand-collapse-icon`,$expanded:z,children:e.jsx(s.ChevronIcon,{})})]})}),e.jsx(s.Expandable,{id:A,style:I?k:N,"data-testid":`${j}-expandable-container`,inert:r.inertValue(!z),children:e.jsx(s.ContentContainer,{ref:R,"data-testid":"content-container",children:c})})]})}));exports.AccordionItem=d;
|
|
2
2
|
//# sourceMappingURL=accordion-item.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion-item.js","sources":["../../../src/accordion/accordion-item.tsx"],"sourcesContent":["import { useSpring } from \"@react-spring/web\";\nimport React, {\n forwardRef,\n useContext,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { useResizeDetector } from \"react-resize-detector\";\nimport { inertValue } from \"../shared/accessibility\";\nimport { useId } from \"../util\";\nimport { AccordionContext } from \"./accordion-context\";\nimport {\n ChevronIcon,\n Container,\n ContentContainer,\n ExpandCollapseButton,\n Expandable,\n IconContainer,\n Title,\n} from \"./accordion-item.style\";\nimport {\n AccordionItemApi,\n AccordionItemHandle,\n AccordionItemProps,\n} from \"./types\";\n\nfunction Component(\n {\n title,\n children,\n type = \"default\",\n collapsible = true,\n className,\n id,\n expanded: expandedControlled,\n \"data-testid\": testId = \"accordion-item\",\n }: AccordionItemProps,\n ref: React.Ref<AccordionItemHandle>\n) {\n // =========================================================================\n // CONST, STATE, REF\n // =========================================================================\n const elementRef = useRef<HTMLDivElement>(null);\n const {\n expandAll,\n itemHeadingLevel,\n onItemStateChange,\n itemState,\n onItemDeregister,\n } = useContext(AccordionContext);\n const [hasFirstLoad, setHasFirstLoad] = useState<boolean>(false);\n const internalId = useId();\n const contentId = `${internalId}-content`;\n const resizeDetector = useResizeDetector();\n const expanded =\n itemState[internalId] ??\n (collapsible ? expandedControlled ?? expandAll : true); // the initial value\n\n useImperativeHandle(\n ref,\n () =>\n Object.assign<HTMLDivElement, AccordionItemApi>(\n elementRef.current!,\n {\n expand(): void {\n onItemStateChange(internalId, true);\n },\n collapse(): void {\n onItemStateChange(internalId, false);\n },\n isExpanded() {\n return expanded;\n },\n }\n ),\n [expanded]\n );\n\n // =========================================================================\n // EFFECTS\n // =========================================================================\n useEffect(() => {\n setHasFirstLoad(true);\n\n return () => onItemDeregister?.(internalId);\n }, []);\n\n useEffect(() => {\n onItemStateChange(\n internalId,\n collapsible ? expandedControlled ?? expandAll : true\n );\n }, [expandAll, expandedControlled, collapsible]);\n\n // =========================================================================\n // EVENT HANDLERS\n // =========================================================================\n\n const handleExpandCollapseClick = (event: React.MouseEvent) => {\n event.preventDefault();\n onItemStateChange(internalId, !expanded);\n };\n\n // =========================================================================\n // RENDER FUNCTIONS\n // =========================================================================\n // React spring animation configuration\n const resizeHeight = {\n height: expanded ? resizeDetector.height : 0,\n };\n const expandableStyles = useSpring(resizeHeight);\n\n const renderContent = () => {\n return (\n <Expandable\n id={contentId}\n style={hasFirstLoad ? expandableStyles : resizeHeight}\n data-testid={`${testId}-expandable-container`}\n inert={inertValue(!expanded)}\n >\n <ContentContainer\n ref={resizeDetector.ref}\n data-testid=\"content-container\"\n >\n {children}\n </ContentContainer>\n </Expandable>\n );\n };\n\n const renderTitleText = () => {\n if (typeof title !== \"string\") {\n return title;\n }\n\n return (\n <Title\n data-testid={`${testId}-title`}\n $type={type}\n $isCollapsed={expanded}\n >\n {title}\n </Title>\n );\n };\n\n const renderTitle = () => {\n return (\n <h3 aria-level={itemHeadingLevel}>\n <ExpandCollapseButton\n data-testid={`${testId}-expand-collapse-button`}\n onClick={\n collapsible ? handleExpandCollapseClick : undefined\n }\n $expanded={expanded}\n $collapsible={collapsible}\n aria-controls={contentId}\n aria-disabled={!collapsible} // remains focusable\n aria-expanded={expanded}\n >\n {renderTitleText()}\n {collapsible && (\n <IconContainer\n data-testid={`${testId}-expand-collapse-icon`}\n $expanded={expanded}\n >\n <ChevronIcon />\n </IconContainer>\n )}\n </ExpandCollapseButton>\n </h3>\n );\n };\n\n return (\n <Container\n data-testid={testId}\n className={className}\n id={id}\n $expanded={expanded}\n ref={elementRef}\n >\n {renderTitle()}\n {renderContent()}\n </Container>\n );\n}\n\nexport const AccordionItem = forwardRef<\n AccordionItemHandle,\n AccordionItemProps\n>(Component);\n"],"names":["AccordionItem","forwardRef","title","children","type","collapsible","className","id","expanded","expandedControlled","testId","ref","elementRef","useRef","expandAll","itemHeadingLevel","onItemStateChange","itemState","onItemDeregister","useContext","AccordionContext","hasFirstLoad","setHasFirstLoad","useState","internalId","useId","contentId","resizeDetector","useResizeDetector","_a","useImperativeHandle","Object","assign","current","expand","collapse","isExpanded","useEffect","handleExpandCollapseClick","event","preventDefault","resizeHeight","height","expandableStyles","useSpring","_jsxs","Container","$expanded","_jsx","ExpandCollapseButton","onClick","undefined","$collapsible","Title","$type","IconContainer","ChevronIcon","Expandable","style","inert","inertValue","ContentContainer"],"mappings":"ihBA8LaA,EAAgBC,EAAAA,YAlK7B,UACIC,MACIA,EAAKC,SACLA,EAAQC,KACRA,EAAO,UAASC,YAChBA,GAAc,EAAIC,UAClBA,EAASC,GACTA,EACAC,SAAUC,EACV,cAAeC,EAAS,kBAE5BC,SAKA,MAAMC,EAAaC,EAAAA,OAAuB,OACpCC,UACFA,EAASC,iBACTA,EAAgBC,kBAChBA,EAAiBC,UACjBA,EAASC,iBACTA,GACAC,EAAAA,WAAWC,qBACRC,EAAcC,GAAmBC,EAAAA,UAAkB,GACpDC,EAAaC,EAAAA,QACbC,EAAY,GAAGF,YACfG,EAAiBC,EAAAA,oBACjBpB,EACmB,QAArBqB,EAAAZ,EAAUO,UAAW,IAAAK,EAAAA,GACpBxB,IAAcI,QAAAA,EAAsBK,GAEzCgB,EAAAA,oBACInB,GACA,IACIoB,OAAOC,OACHpB,EAAWqB,QACX,CACI,MAAAC,GACIlB,EAAkBQ,GAAY,EAClC,EACA,QAAAW,GACInB,EAAkBQ,GAAY,EAClC,EACAY,WAAU,IACC5B,KAIvB,CAACA,IAML6B,EAAAA,WAAU,KACNf,GAAgB,GAET,IAAMJ,aAAgB,EAAhBA,EAAmBM,KACjC,IAEHa,EAAAA,WAAU,KACNrB,EACIQ,GACAnB,IAAcI,QAAAA,EAAsBK,GACvC,GACF,CAACA,EAAWL,EAAoBJ,IAMnC,MAAMiC,EAA6BC,IAC/BA,EAAMC,iBACNxB,EAAkBQ,GAAahB,EAAS,EAOtCiC,EAAe,CACjBC,OAAQlC,EAAWmB,EAAee,OAAS,GAEzCC,EAAmBC,EAAAA,UAAUH,GAgEnC,OACII,EAAAA,KAACC,EAAAA,UAAS,CAAA,cACOpC,EACbJ,UAAWA,EACXC,GAAIA,EAAEwC,UACKvC,EACXG,IAAKC,EAAUT,SAAA,CAhCf6C,MAAA,KAAA,CAAA,aAAgBjC,EAAgBZ,SAC5B0C,EAAAA,KAACI,EAAAA,qBAAoB,CAAA,cACJ,GAAGvC,2BAChBwC,QACI7C,EAAciC,OAA4Ba,EAASJ,UAE5CvC,EAAQ4C,aACL/C,EAAW,gBACVqB,mBACCrB,EAAW,gBACZG,EAAQL,SAAA,CA3Bd,iBAAVD,EACAA,EAIP8C,EAAAA,IAACK,EAAAA,MAAK,CAAA,cACW,GAAG3C,UAAc4C,MACvBlD,eACOI,EAAQL,SAErBD,IAoBIG,GACG2C,MAACO,EAAAA,cAAa,CAAA,cACG,GAAG7C,yBAA6BqC,UAClCvC,EAAQL,SAEnB6C,EAAAA,IAACQ,cAAW,CAAA,UApD5BR,EAAAA,IAACS,EAAAA,WAAU,CACPlD,GAAImB,EACJgC,MAAOrC,EAAesB,EAAmBF,EAAY,cACxC,GAAG/B,yBAChBiD,MAAOC,cAAYpD,GAASL,SAE5B6C,EAAAA,IAACa,EAAAA,iBAAgB,CACblD,IAAKgB,EAAehB,IAAG,cACX,6BAEXR,QA8DrB"}
|
|
1
|
+
{"version":3,"file":"accordion-item.js","sources":["../../../src/accordion/accordion-item.tsx"],"sourcesContent":["import { useSpring } from \"@react-spring/web\";\nimport React, {\n forwardRef,\n useContext,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { useResizeDetector } from \"react-resize-detector\";\nimport { inertValue } from \"../shared/accessibility\";\nimport { useId } from \"../util\";\nimport { AccordionContext } from \"./accordion-context\";\nimport {\n ChevronIcon,\n Container,\n ContentContainer,\n ExpandCollapseButton,\n Expandable,\n IconContainer,\n Title,\n} from \"./accordion-item.style\";\nimport {\n AccordionItemApi,\n AccordionItemHandle,\n AccordionItemProps,\n} from \"./types\";\n\nfunction Component(\n {\n title,\n children,\n type = \"default\",\n collapsible = true,\n className,\n id,\n expanded: expandedControlled,\n onExpandChange,\n \"data-testid\": testId = \"accordion-item\",\n }: AccordionItemProps,\n ref: React.Ref<AccordionItemHandle>\n) {\n // =========================================================================\n // CONST, STATE, REF\n // =========================================================================\n const elementRef = useRef<HTMLDivElement>(null);\n const {\n expandAll,\n itemHeadingLevel,\n onItemStateChange,\n itemState,\n onItemDeregister,\n } = useContext(AccordionContext);\n const [hasFirstLoad, setHasFirstLoad] = useState<boolean>(false);\n const internalId = useId();\n const contentId = `${internalId}-content`;\n const { height, ref: resizeDetectorRef } = useResizeDetector();\n const isControlled = onExpandChange !== undefined;\n const expanded = isControlled\n ? collapsible\n ? expandedControlled ?? false\n : true\n : itemState[internalId] ??\n (collapsible ? expandedControlled ?? expandAll : true);\n\n useImperativeHandle(\n ref,\n () =>\n Object.assign<HTMLDivElement, AccordionItemApi>(\n elementRef.current!,\n {\n expand(): void {\n if (isControlled) {\n onExpandChange?.(true);\n } else {\n onItemStateChange(internalId, true);\n }\n },\n collapse(): void {\n if (isControlled) {\n onExpandChange?.(false);\n } else {\n onItemStateChange(internalId, false);\n }\n },\n isExpanded() {\n return expanded;\n },\n }\n ),\n [expanded]\n );\n\n // =========================================================================\n // EFFECTS\n // =========================================================================\n useEffect(() => {\n setHasFirstLoad(true);\n\n return () => onItemDeregister?.(internalId);\n }, []);\n\n // Controlled mode: keep parent itemState in sync so \"Show all\"/\"Hide all\" label stays accurate\n useEffect(() => {\n if (isControlled) {\n onItemStateChange(\n internalId,\n collapsible ? expandedControlled ?? false : true\n );\n }\n }, [expandedControlled, collapsible]);\n\n // Uncontrolled mode: sync state when expandAll button or the hint prop changes\n useEffect(() => {\n if (!isControlled) {\n onItemStateChange(\n internalId,\n collapsible ? expandedControlled ?? expandAll : true\n );\n }\n }, [expandAll, expandedControlled, collapsible]);\n\n // Controlled mode: forward expandAll button changes to the caller\n useEffect(() => {\n if (!isControlled || !hasFirstLoad) return;\n const next = collapsible ? expandAll : true;\n if (next !== expandedControlled) {\n onExpandChange?.(next);\n }\n }, [expandAll]);\n\n // =========================================================================\n // EVENT HANDLERS\n // =========================================================================\n\n const handleExpandCollapseClick = (event: React.MouseEvent) => {\n event.preventDefault();\n if (isControlled) {\n onExpandChange?.(!expanded);\n } else {\n onItemStateChange(internalId, !expanded);\n }\n };\n\n // =========================================================================\n // RENDER FUNCTIONS\n // =========================================================================\n // React spring animation configuration\n const resizeHeight = {\n height: expanded ? height : 0,\n };\n const expandableStyles = useSpring(resizeHeight);\n\n const renderContent = () => {\n return (\n <Expandable\n id={contentId}\n style={hasFirstLoad ? expandableStyles : resizeHeight}\n data-testid={`${testId}-expandable-container`}\n inert={inertValue(!expanded)}\n >\n <ContentContainer\n ref={resizeDetectorRef}\n data-testid=\"content-container\"\n >\n {children}\n </ContentContainer>\n </Expandable>\n );\n };\n\n const renderTitleText = () => {\n if (typeof title !== \"string\") {\n return title;\n }\n\n return (\n <Title\n data-testid={`${testId}-title`}\n $type={type}\n $isCollapsed={expanded}\n >\n {title}\n </Title>\n );\n };\n\n const renderTitle = () => {\n return (\n <h3 aria-level={itemHeadingLevel}>\n <ExpandCollapseButton\n data-testid={`${testId}-expand-collapse-button`}\n onClick={\n collapsible ? handleExpandCollapseClick : undefined\n }\n $expanded={expanded}\n $collapsible={collapsible}\n aria-controls={contentId}\n aria-disabled={!collapsible} // remains focusable\n aria-expanded={expanded}\n >\n {renderTitleText()}\n {collapsible && (\n <IconContainer\n data-testid={`${testId}-expand-collapse-icon`}\n $expanded={expanded}\n >\n <ChevronIcon />\n </IconContainer>\n )}\n </ExpandCollapseButton>\n </h3>\n );\n };\n\n return (\n <Container\n data-testid={testId}\n className={className}\n id={id}\n $expanded={expanded}\n ref={elementRef}\n >\n {renderTitle()}\n {renderContent()}\n </Container>\n );\n}\n\nexport const AccordionItem = forwardRef<\n AccordionItemHandle,\n AccordionItemProps\n>(Component);\n"],"names":["AccordionItem","forwardRef","title","children","type","collapsible","className","id","expanded","expandedControlled","onExpandChange","testId","ref","elementRef","useRef","expandAll","itemHeadingLevel","onItemStateChange","itemState","onItemDeregister","useContext","AccordionContext","hasFirstLoad","setHasFirstLoad","useState","internalId","useId","contentId","height","resizeDetectorRef","useResizeDetector","isControlled","undefined","_a","useImperativeHandle","Object","assign","current","expand","collapse","isExpanded","useEffect","next","handleExpandCollapseClick","event","preventDefault","resizeHeight","expandableStyles","useSpring","_jsxs","Container","$expanded","_jsx","ExpandCollapseButton","onClick","$collapsible","Title","$type","IconContainer","ChevronIcon","Expandable","style","inert","inertValue","ContentContainer"],"mappings":"ihBAqOaA,EAAgBC,EAAAA,YAzM7B,UACIC,MACIA,EAAKC,SACLA,EAAQC,KACRA,EAAO,UAASC,YAChBA,GAAc,EAAIC,UAClBA,EAASC,GACTA,EACAC,SAAUC,EAAkBC,eAC5BA,EACA,cAAeC,EAAS,kBAE5BC,SAKA,MAAMC,EAAaC,EAAAA,OAAuB,OACpCC,UACFA,EAASC,iBACTA,EAAgBC,kBAChBA,EAAiBC,UACjBA,EAASC,iBACTA,GACAC,EAAAA,WAAWC,qBACRC,EAAcC,GAAmBC,EAAAA,UAAkB,GACpDC,EAAaC,EAAAA,QACbC,EAAY,GAAGF,aACfG,OAAEA,EAAQhB,IAAKiB,GAAsBC,EAAAA,oBACrCC,OAAkCC,IAAnBtB,EACfF,EAAWuB,GACX1B,GACII,SAAAA,EAEiB,QAArBwB,EAAAf,EAAUO,UAAW,IAAAQ,EAAAA,GACpB5B,IAAcI,QAAAA,EAAsBM,GAE3CmB,EAAAA,oBACItB,GACA,IACIuB,OAAOC,OACHvB,EAAWwB,QACX,CACI,MAAAC,GACQP,EACArB,SAAAA,GAAiB,GAEjBO,EAAkBQ,GAAY,EAEtC,EACA,QAAAc,GACQR,EACArB,SAAAA,GAAiB,GAEjBO,EAAkBQ,GAAY,EAEtC,EACAe,WAAU,IACChC,KAIvB,CAACA,IAMLiC,EAAAA,WAAU,KACNlB,GAAgB,GAET,IAAMJ,aAAgB,EAAhBA,EAAmBM,KACjC,IAGHgB,EAAAA,WAAU,KACFV,GACAd,EACIQ,GACApB,GAAcI,SAAAA,EAEtB,GACD,CAACA,EAAoBJ,IAGxBoC,EAAAA,WAAU,KACDV,GACDd,EACIQ,GACApB,IAAcI,QAAAA,EAAsBM,GAE5C,GACD,CAACA,EAAWN,EAAoBJ,IAGnCoC,EAAAA,WAAU,KACN,IAAKV,IAAiBT,EAAc,OACpC,MAAMoB,GAAOrC,GAAcU,EACvB2B,IAASjC,IACTC,SAAAA,EAAiBgC,GACrB,GACD,CAAC3B,IAMJ,MAAM4B,EAA6BC,IAC/BA,EAAMC,iBACFd,EACArB,SAAAA,GAAkBF,GAElBS,EAAkBQ,GAAajB,EACnC,EAOEsC,EAAe,CACjBlB,OAAQpB,EAAWoB,EAAS,GAE1BmB,EAAmBC,EAAAA,UAAUF,GAgEnC,OACIG,EAAAA,KAACC,EAAAA,UAAS,CAAA,cACOvC,EACbL,UAAWA,EACXC,GAAIA,EAAE4C,UACK3C,EACXI,IAAKC,EAAUV,SAAA,CAhCfiD,MAAA,KAAA,CAAA,aAAgBpC,EAAgBb,SAC5B8C,EAAAA,KAACI,EAAAA,qBAAoB,CAAA,cACJ,GAAG1C,2BAChB2C,QACIjD,EAAcsC,OAA4BX,EAASmB,UAE5C3C,EAAQ+C,aACLlD,EAAW,gBACVsB,mBACCtB,EAAW,gBACZG,EAAQL,SAAA,CA3Bd,iBAAVD,EACAA,EAIPkD,EAAAA,IAACI,EAAAA,MAAK,CAAA,cACW,GAAG7C,UAAc8C,MACvBrD,eACOI,EAAQL,SAErBD,IAoBIG,GACG+C,MAACM,EAAAA,cAAa,CAAA,cACG,GAAG/C,yBAA6BwC,UAClC3C,EAAQL,SAEnBiD,EAAAA,IAACO,cAAW,CAAA,UApD5BP,EAAAA,IAACQ,EAAAA,WAAU,CACPrD,GAAIoB,EACJkC,MAAOvC,EAAeyB,EAAmBD,gBAC5B,GAAGnC,yBAChBmD,MAAOC,EAAAA,YAAYvD,YAEnB4C,EAAAA,IAACY,EAAAA,kBACGpD,IAAKiB,EAAiB,cACV,6BAEX1B,QA8DrB"}
|
|
@@ -85,14 +85,15 @@
|
|
|
85
85
|
}
|
|
86
86
|
`;case"large":return o.css`
|
|
87
87
|
height: 4rem;
|
|
88
|
-
${r.Font["heading-md-semibold"]}
|
|
88
|
+
${r.Font["heading-md-semibold"]};
|
|
89
|
+
font-family: ${r.Font.Spec["body-font-family"]};
|
|
89
90
|
|
|
90
91
|
${r.MediaQuery.MaxWidth.xxs} {
|
|
91
92
|
height: auto;
|
|
92
93
|
}
|
|
93
94
|
`;default:return o.css`
|
|
94
95
|
height: 3rem;
|
|
95
|
-
${r.Font["
|
|
96
|
+
${r.Font["body-baseline-semibold"]}
|
|
96
97
|
|
|
97
98
|
${r.MediaQuery.MaxWidth.xxs} {
|
|
98
99
|
height: auto;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.style.js","sources":["../../../src/button/button.style.tsx"],"sourcesContent":["import styled, { css } from \"styled-components\";\nimport { ComponentLoadingSpinner } from \"../shared/component-loading-spinner\";\nimport { Border, Colour, Font, MediaQuery, Motion, Spacing } from \"../theme\";\nimport { ThemeButton } from \"../theme/components/theme-helper\";\n\nexport type MainButtonStyle =\n | \"default\"\n | \"disabled\"\n | \"secondary\"\n | \"light\"\n | \"link\";\n\nexport type MainButtonSize = \"default\" | \"small\" | \"large\";\n\nexport interface MainStyleProps {\n $buttonStyle: MainButtonStyle;\n $buttonSizeStyle?: MainButtonSize | undefined;\n $buttonIsDanger?: boolean;\n}\n\nexport const Main = styled.button<MainStyleProps>`\n padding: ${Spacing[\"spacing-8\"]} ${Spacing[\"spacing-16\"]};\n min-width: 4rem;\n border: ${Border[\"width-010\"]} ${Border[\"solid\"]} transparent;\n transition: all ${Motion[\"duration-250\"]} ${Motion[\"ease-default\"]};\n border-radius: ${ThemeButton[\"button-radius\"]};\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n\n // -----------------------------------------------------------------------------\n // BUTTON STYLE + TEXT COLOR\n // -----------------------------------------------------------------------------\n ${(props) => {\n switch (props.$buttonStyle) {\n case \"secondary\":\n return css`\n background-color: ${Colour.bg};\n border-color: ${props.$buttonIsDanger\n ? Colour[\"border-error-strong\"]\n : ThemeButton[\"button-secondary-colour-border\"]};\n\n color: ${props.$buttonIsDanger\n ? Colour[\"text-error\"]\n : ThemeButton[\"button-secondary-colour-text\"]};\n\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${Colour[\"bg-hover-neutral\"]};\n }\n }\n `;\n case \"light\":\n return css`\n background-color: ${Colour.bg};\n border-color: ${Colour.border};\n\n color: ${props.$buttonIsDanger\n ? Colour[\"text-error\"]\n : ThemeButton[\"button-light-colour-text\"]};\n\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${Colour[\"bg-hover-neutral\"]};\n }\n }\n `;\n\n case \"link\":\n return css`\n background-color: transparent;\n\n color: ${props.$buttonIsDanger\n ? Colour[\"text-error\"]\n : ThemeButton[\"button-link-colour-text\"]};\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${Colour[\"bg-hover-neutral\"]};\n }\n }\n `;\n case \"disabled\":\n return css`\n background-color: ${Colour[\"bg-disabled\"]};\n\n cursor: not-allowed;\n\n &:hover {\n box-shadow: none;\n }\n\n color: ${Colour[\"text-disabled\"]};\n `;\n default:\n return css`\n background-color: ${props.$buttonIsDanger\n ? Colour[\"bg-error-strong\"]\n : ThemeButton[\"button-default-colour-bg\"]};\n\n ${MediaQuery.MaxWidth.sm} {\n width: 100%;\n }\n\n color: ${ThemeButton[\"button-default-colour-text\"]};\n\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${props.$buttonIsDanger\n ? Colour[\"bg-error-strong-hover\"]\n : ThemeButton[\n \"button-default-colour-bg-hover\"\n ]};\n }\n }\n `;\n }\n }}\n\n // -----------------------------------------------------------------------------\n\t// BUTTON SIZE + TEXT SIZE\n\t// -----------------------------------------------------------------------------\n\t${(props) => {\n switch (props.$buttonSizeStyle) {\n case \"small\":\n return css`\n height: 2.5rem;\n ${Font[\"body-md-semibold\"]}\n\n ${MediaQuery.MaxWidth.xxs} {\n height: auto;\n }\n `;\n\n case \"large\":\n return css`\n height: 4rem;\n ${Font[\"heading-md-semibold\"]}\n\n ${MediaQuery.MaxWidth.xxs} {\n height: auto;\n }\n `;\n\n default:\n return css`\n height: 3rem;\n ${Font[\"
|
|
1
|
+
{"version":3,"file":"button.style.js","sources":["../../../src/button/button.style.tsx"],"sourcesContent":["import styled, { css } from \"styled-components\";\nimport { ComponentLoadingSpinner } from \"../shared/component-loading-spinner\";\nimport { Border, Colour, Font, MediaQuery, Motion, Spacing } from \"../theme\";\nimport { ThemeButton } from \"../theme/components/theme-helper\";\n\nexport type MainButtonStyle =\n | \"default\"\n | \"disabled\"\n | \"secondary\"\n | \"light\"\n | \"link\";\n\nexport type MainButtonSize = \"default\" | \"small\" | \"large\";\n\nexport interface MainStyleProps {\n $buttonStyle: MainButtonStyle;\n $buttonSizeStyle?: MainButtonSize | undefined;\n $buttonIsDanger?: boolean;\n}\n\nexport const Main = styled.button<MainStyleProps>`\n padding: ${Spacing[\"spacing-8\"]} ${Spacing[\"spacing-16\"]};\n min-width: 4rem;\n border: ${Border[\"width-010\"]} ${Border[\"solid\"]} transparent;\n transition: all ${Motion[\"duration-250\"]} ${Motion[\"ease-default\"]};\n border-radius: ${ThemeButton[\"button-radius\"]};\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n\n // -----------------------------------------------------------------------------\n // BUTTON STYLE + TEXT COLOR\n // -----------------------------------------------------------------------------\n ${(props) => {\n switch (props.$buttonStyle) {\n case \"secondary\":\n return css`\n background-color: ${Colour.bg};\n border-color: ${props.$buttonIsDanger\n ? Colour[\"border-error-strong\"]\n : ThemeButton[\"button-secondary-colour-border\"]};\n\n color: ${props.$buttonIsDanger\n ? Colour[\"text-error\"]\n : ThemeButton[\"button-secondary-colour-text\"]};\n\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${Colour[\"bg-hover-neutral\"]};\n }\n }\n `;\n case \"light\":\n return css`\n background-color: ${Colour.bg};\n border-color: ${Colour.border};\n\n color: ${props.$buttonIsDanger\n ? Colour[\"text-error\"]\n : ThemeButton[\"button-light-colour-text\"]};\n\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${Colour[\"bg-hover-neutral\"]};\n }\n }\n `;\n\n case \"link\":\n return css`\n background-color: transparent;\n\n color: ${props.$buttonIsDanger\n ? Colour[\"text-error\"]\n : ThemeButton[\"button-link-colour-text\"]};\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${Colour[\"bg-hover-neutral\"]};\n }\n }\n `;\n case \"disabled\":\n return css`\n background-color: ${Colour[\"bg-disabled\"]};\n\n cursor: not-allowed;\n\n &:hover {\n box-shadow: none;\n }\n\n color: ${Colour[\"text-disabled\"]};\n `;\n default:\n return css`\n background-color: ${props.$buttonIsDanger\n ? Colour[\"bg-error-strong\"]\n : ThemeButton[\"button-default-colour-bg\"]};\n\n ${MediaQuery.MaxWidth.sm} {\n width: 100%;\n }\n\n color: ${ThemeButton[\"button-default-colour-text\"]};\n\n &:hover,\n &:active {\n @media (pointer: fine) {\n background-color: ${props.$buttonIsDanger\n ? Colour[\"bg-error-strong-hover\"]\n : ThemeButton[\n \"button-default-colour-bg-hover\"\n ]};\n }\n }\n `;\n }\n }}\n\n // -----------------------------------------------------------------------------\n\t// BUTTON SIZE + TEXT SIZE\n\t// -----------------------------------------------------------------------------\n\t${(props) => {\n switch (props.$buttonSizeStyle) {\n case \"small\":\n return css`\n height: 2.5rem;\n ${Font[\"body-md-semibold\"]}\n\n ${MediaQuery.MaxWidth.xxs} {\n height: auto;\n }\n `;\n\n case \"large\":\n return css`\n height: 4rem;\n ${Font[\"heading-md-semibold\"]};\n font-family: ${Font.Spec[\"body-font-family\"]};\n\n ${MediaQuery.MaxWidth.xxs} {\n height: auto;\n }\n `;\n\n default:\n return css`\n height: 3rem;\n ${Font[\"body-baseline-semibold\"]}\n\n ${MediaQuery.MaxWidth.xxs} {\n height: auto;\n }\n `;\n }\n }}\n`;\n\nexport const Spinner = styled(ComponentLoadingSpinner)<{\n $hasChildren: boolean;\n}>`\n margin-right: ${(props) => (props.$hasChildren ? \"0.5rem\" : \"0\")};\n`;\n"],"names":["Main","styled","button","Spacing","Border","Motion","ThemeButton","props","$buttonStyle","css","Colour","bg","$buttonIsDanger","border","MediaQuery","MaxWidth","sm","$buttonSizeStyle","Font","xxs","Spec","Spinner","ComponentLoadingSpinner","$hasChildren"],"mappings":"iSAoBO,MAAMA,EAAOC,EAAAA,QAAOC,MAAsB;eAClCC,EAAAA,QAAQ,gBAAgBA,EAAAA,QAAQ;;cAEjCC,EAAAA,OAAO,gBAAgBA,EAAAA,OAAc;sBAC7BC,EAAAA,OAAO,mBAAmBA,EAAAA,OAAO;qBAClCC,EAAAA,YAAY;;;;;;;;;MAS1BC,IACC,OAAQA,EAAMC,cACV,IAAK,YACD,OAAOC,KAAG;wCACcC,EAAAA,OAAOC;oCACXJ,EAAMK,gBAChBF,EAAAA,OAAO,uBACPJ,EAAAA,YAAY;;6BAETC,EAAMK,gBACTF,EAAAA,OAAO,cACPJ,EAAAA,YAAY;;;;;gDAKUI,EAAAA,OAAO;;;kBAI3C,IAAK,QACD,OAAOD,KAAG;wCACcC,EAAAA,OAAOC;oCACXD,EAAAA,OAAOG;;6BAEdN,EAAMK,gBACTF,EAAAA,OAAO,cACPJ,EAAAA,YAAY;;;;;gDAKUI,EAAAA,OAAO;;;kBAK3C,IAAK,OACD,OAAOD,KAAG;;;6BAGGF,EAAMK,gBACTF,EAAAA,OAAO,cACPJ,EAAAA,YAAY;;;;gDAIUI,EAAAA,OAAO;;;kBAI3C,IAAK,WACD,OAAOD,KAAG;wCACcC,EAAAA,OAAO;;;;;;;;6BAQlBA,EAAAA,OAAO;kBAExB,QACI,OAAOD,KAAG;wCACcF,EAAMK,gBACpBF,EAAAA,OAAO,mBACPJ,EAAAA,YAAY;;sBAEhBQ,EAAAA,WAAWC,SAASC;;;;6BAIbV,EAAAA,YAAY;;;;;gDAKOC,EAAMK,gBACpBF,EAAAA,OAAO,yBACPJ,EAAAA,YACI;;;;;;;;GAWlCC,IACI,OAAQA,EAAMU,kBACV,IAAK,QACD,OAAOR,KAAG;;sBAEJS,EAAAA,KAAK;;sBAELJ,EAAAA,WAAWC,SAASI;;;kBAK9B,IAAK,QACD,OAAOV,KAAG;;sBAEJS,EAAAA,KAAK;mCACQA,EAAAA,KAAKE,KAAK;;sBAEvBN,EAAAA,WAAWC,SAASI;;;kBAK9B,QACI,OAAOV,KAAG;;sBAEJS,EAAAA,KAAK;;sBAELJ,EAAAA,WAAWC,SAASI;;;;EAQ7BE,EAAUpB,EAAAA,QAAOqB,EAAAA,wBAE5B;oBACmBf,GAAWA,EAAMgB,aAAe,SAAW;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/*! @license DOMPurify 3.4.
|
|
3
|
-
function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function t(t,n){return function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i,a,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t);else for(;!(c=(o=i.call(n)).done)&&(l.push(o.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(s)throw r}}return l}}(t,n)||function(t,n){if(t){if("string"==typeof t)return e(t,n);var o={}.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?e(t,n):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}Object.defineProperty(exports,"__esModule",{value:!0});const n=Object.entries,o=Object.setPrototypeOf,r=Object.isFrozen,i=Object.getPrototypeOf,a=Object.getOwnPropertyDescriptor;let l=Object.freeze,c=Object.seal,s=Object.create,u="undefined"!=typeof Reflect&&Reflect,f=u.apply,p=u.construct;l||(l=function(e){return e}),c||(c=function(e){return e}),f||(f=function(e,t){for(var n=arguments.length,o=new Array(n>2?n-2:0),r=2;r<n;r++)o[r-2]=arguments[r];return e.apply(t,o)}),p||(p=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return new e(...n)});const m=L(Array.prototype.forEach),d=L(Array.prototype.lastIndexOf),h=L(Array.prototype.pop),g=L(Array.prototype.push),y=L(Array.prototype.splice),b=Array.isArray,T=L(String.prototype.toLowerCase),S=L(String.prototype.toString),E=L(String.prototype.match),A=L(String.prototype.replace),N=L(String.prototype.indexOf),_=L(String.prototype.trim),w=L(Number.prototype.toString),O=L(Boolean.prototype.toString),v="undefined"==typeof BigInt?null:L(BigInt.prototype.toString),D="undefined"==typeof Symbol?null:L(Symbol.prototype.toString),R=L(Object.prototype.hasOwnProperty),C=L(Object.prototype.toString),I=L(RegExp.prototype.test),x=(k=TypeError,function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return p(k,t)});var k;function L(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,o=new Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return f(e,t,o)}}function M(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:T;if(o&&o(e,null),!b(t))return e;let i=t.length;for(;i--;){let o=t[i];if("string"==typeof o){const e=n(o);e!==o&&(r(t)||(t[i]=e),o=e)}e[o]=!0}return e}function z(e){for(let t=0;t<e.length;t++){R(e,t)||(e[t]=null)}return e}function P(e){const o=s(null);for(const i of n(e)){var r=t(i,2);const n=r[0],a=r[1];R(e,n)&&(b(a)?o[n]=z(a):a&&"object"==typeof a&&a.constructor===Object?o[n]=P(a):o[n]=a)}return o}function U(e,t){for(;null!==e;){const n=a(e,t);if(n){if(n.get)return L(n.get);if("function"==typeof n.value)return L(n.value)}e=i(e)}return function(){return null}}const F=l(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),H=l(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),j=l(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),B=l(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),G=l(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),W=l(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Y=l(["#text"]),q=l(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),X=l(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),$=l(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),K=l(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),V=c(/{{[\w\W]*|^[\w\W]*}}/g),Z=c(/<%[\w\W]*|^[\w\W]*%>/g),J=c(/\${[\w\W]*/g),Q=c(/^data-[\-\w.\u00B7-\uFFFF]+$/),ee=c(/^aria-[\-\w]+$/),te=c(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ne=c(/^(?:\w+script|data):/i),oe=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),re=c(/^html$/i),ie=c(/^[a-z][.\w]*(-[.\w]+)+$/i),ae=c(/<[/\w!]/g),le=c(/<[/\w]/g),ce=c(/<\/no(script|embed|frames)/i),se=c(/\/>/i),ue=1,fe=3,pe=7,me=8,de=9,he=11,ge=function(){return"undefined"==typeof window?null:window},ye=function(e,t,n,o){return R(e,t)&&b(e[t])?M(o.base?P(o.base):{},e[t],o.transform):n};var be=function e(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ge();const o=t=>e(t);if(o.version="3.4.12",o.removed=[],!t||!t.document||t.document.nodeType!==de||!t.Element)return o.isSupported=!1,o;let r=t.document;const i=r,a=i.currentScript;t.DocumentFragment;const u=t.HTMLTemplateElement,f=t.Node,p=t.Element,k=t.NodeFilter,L=t.NamedNodeMap;void 0===L&&(t.NamedNodeMap||t.MozNamedAttrMap),t.HTMLFormElement;const z=t.DOMParser,be=t.trustedTypes,Te=p.prototype,Se=U(Te,"cloneNode"),Ee=U(Te,"remove"),Ae=U(Te,"nextSibling"),Ne=U(Te,"childNodes"),_e=U(Te,"parentNode"),we=U(Te,"shadowRoot"),Oe=U(Te,"attributes"),ve=f&&f.prototype?U(f.prototype,"nodeType"):null,De=f&&f.prototype?U(f.prototype,"nodeName"):null;if("function"==typeof u){const e=r.createElement("template");e.content&&e.content.ownerDocument&&(r=e.content.ownerDocument)}let Re,Ce,Ie="",xe=!1,ke=0;const Le=function(){if(ke>0)throw x('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},Me=function(e){Le(),ke++;try{return Re.createHTML(e)}finally{ke--}},ze=function(){return xe||(Ce=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;const o="data-tt-policy-suffix";t&&t.hasAttribute(o)&&(n=t.getAttribute(o));const r="dompurify"+(n?"#"+n:"");try{return e.createPolicy(r,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+r+" could not be created."),null}}(be,a),xe=!0),Ce},Pe=r,Ue=Pe.implementation,Fe=Pe.createNodeIterator,He=Pe.createDocumentFragment,je=Pe.getElementsByTagName,Be=i.importNode;let Ge={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};o.isSupported="function"==typeof n&&"function"==typeof _e&&Ue&&void 0!==Ue.createHTMLDocument;const We=V,Ye=Z,qe=J,Xe=Q,$e=ee,Ke=ne,Ve=oe,Ze=ie;let Je=te,Qe=null;const et=M({},[...F,...H,...j,...G,...Y]);let tt=null;const nt=M({},[...q,...X,...$,...K]);let ot=Object.seal(s(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),rt=null,it=null;const at=Object.seal(s(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let lt=!0,ct=!0,st=!1,ut=!0,ft=!1,pt=!0,mt=!1,dt=!1,ht=null,gt=null,yt=!1,bt=!1,Tt=!1,St=!1,Et=!0,At=!1;const Nt="user-content-";let _t=!0,wt=!1,Ot={},vt=null;const Dt=M({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]);let Rt=null;const Ct=M({},["audio","video","img","source","image","track"]);let It=null;const xt=M({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),kt="http://www.w3.org/1998/Math/MathML",Lt="http://www.w3.org/2000/svg",Mt="http://www.w3.org/1999/xhtml";let zt=Mt,Pt=!1,Ut=null;const Ft=M({},[kt,Lt,Mt],S),Ht=l(["mi","mo","mn","ms","mtext"]);let jt=M({},Ht);const Bt=l(["annotation-xml"]);let Gt=M({},Bt);const Wt=M({},["title","style","font","a","script"]);let Yt=null;const qt=["application/xhtml+xml","text/html"];let Xt=null,$t=null;const Kt=r.createElement("form"),Vt=function(e){return e instanceof RegExp||e instanceof Function},Zt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if($t&&$t===e)return;e&&"object"==typeof e||(e={}),e=P(e),Yt=-1===qt.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,Xt="application/xhtml+xml"===Yt?S:T,Qe=ye(e,"ALLOWED_TAGS",et,{transform:Xt}),tt=ye(e,"ALLOWED_ATTR",nt,{transform:Xt}),Ut=ye(e,"ALLOWED_NAMESPACES",Ft,{transform:S}),It=ye(e,"ADD_URI_SAFE_ATTR",xt,{transform:Xt,base:xt}),Rt=ye(e,"ADD_DATA_URI_TAGS",Ct,{transform:Xt,base:Ct}),vt=ye(e,"FORBID_CONTENTS",Dt,{transform:Xt}),rt=ye(e,"FORBID_TAGS",P({}),{transform:Xt}),it=ye(e,"FORBID_ATTR",P({}),{transform:Xt}),Ot=!!R(e,"USE_PROFILES")&&(e.USE_PROFILES&&"object"==typeof e.USE_PROFILES?P(e.USE_PROFILES):e.USE_PROFILES),lt=!1!==e.ALLOW_ARIA_ATTR,ct=!1!==e.ALLOW_DATA_ATTR,st=e.ALLOW_UNKNOWN_PROTOCOLS||!1,ut=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,ft=e.SAFE_FOR_TEMPLATES||!1,pt=!1!==e.SAFE_FOR_XML,mt=e.WHOLE_DOCUMENT||!1,bt=e.RETURN_DOM||!1,Tt=e.RETURN_DOM_FRAGMENT||!1,St=e.RETURN_TRUSTED_TYPE||!1,yt=e.FORCE_BODY||!1,Et=!1!==e.SANITIZE_DOM,At=e.SANITIZE_NAMED_PROPS||!1,_t=!1!==e.KEEP_CONTENT,wt=e.IN_PLACE||!1,Je=function(e){try{return I(e,""),!0}catch(e){return!1}}(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:te,zt="string"==typeof e.NAMESPACE?e.NAMESPACE:Mt,jt=R(e,"MATHML_TEXT_INTEGRATION_POINTS")&&e.MATHML_TEXT_INTEGRATION_POINTS&&"object"==typeof e.MATHML_TEXT_INTEGRATION_POINTS?P(e.MATHML_TEXT_INTEGRATION_POINTS):M({},Ht),Gt=R(e,"HTML_INTEGRATION_POINTS")&&e.HTML_INTEGRATION_POINTS&&"object"==typeof e.HTML_INTEGRATION_POINTS?P(e.HTML_INTEGRATION_POINTS):M({},Bt);const t=R(e,"CUSTOM_ELEMENT_HANDLING")&&e.CUSTOM_ELEMENT_HANDLING&&"object"==typeof e.CUSTOM_ELEMENT_HANDLING?P(e.CUSTOM_ELEMENT_HANDLING):s(null);if(ot=s(null),R(t,"tagNameCheck")&&Vt(t.tagNameCheck)&&(ot.tagNameCheck=t.tagNameCheck),R(t,"attributeNameCheck")&&Vt(t.attributeNameCheck)&&(ot.attributeNameCheck=t.attributeNameCheck),R(t,"allowCustomizedBuiltInElements")&&"boolean"==typeof t.allowCustomizedBuiltInElements&&(ot.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),c(ot),ft&&(ct=!1),Tt&&(bt=!0),Ot&&(Qe=M({},Y),tt=s(null),!0===Ot.html&&(M(Qe,F),M(tt,q)),!0===Ot.svg&&(M(Qe,H),M(tt,X),M(tt,K)),!0===Ot.svgFilters&&(M(Qe,j),M(tt,X),M(tt,K)),!0===Ot.mathMl&&(M(Qe,G),M(tt,$),M(tt,K))),at.tagCheck=null,at.attributeCheck=null,R(e,"ADD_TAGS")&&("function"==typeof e.ADD_TAGS?at.tagCheck=e.ADD_TAGS:b(e.ADD_TAGS)&&(Qe===et&&(Qe=P(Qe)),M(Qe,e.ADD_TAGS,Xt))),R(e,"ADD_ATTR")&&("function"==typeof e.ADD_ATTR?at.attributeCheck=e.ADD_ATTR:b(e.ADD_ATTR)&&(tt===nt&&(tt=P(tt)),M(tt,e.ADD_ATTR,Xt))),R(e,"ADD_URI_SAFE_ATTR")&&b(e.ADD_URI_SAFE_ATTR)&&M(It,e.ADD_URI_SAFE_ATTR,Xt),R(e,"FORBID_CONTENTS")&&b(e.FORBID_CONTENTS)&&(vt===Dt&&(vt=P(vt)),M(vt,e.FORBID_CONTENTS,Xt)),R(e,"ADD_FORBID_CONTENTS")&&b(e.ADD_FORBID_CONTENTS)&&(vt===Dt&&(vt=P(vt)),M(vt,e.ADD_FORBID_CONTENTS,Xt)),_t&&(Qe["#text"]=!0),mt&&M(Qe,["html","head","body"]),Qe.table&&(M(Qe,["tbody"]),delete rt.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw x('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw x('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');const t=Re;Re=e.TRUSTED_TYPES_POLICY;try{Ie=Me("")}catch(e){throw Re=t,e}}else null===e.TRUSTED_TYPES_POLICY?(Re=void 0,Ie=""):(void 0===Re&&(Re=ze()),Re&&"string"==typeof Ie&&(Ie=Me("")));l&&l(e),$t=e},Jt=M({},[...H,...j,...B]),Qt=M({},[...G,...W]),en=function(e){let t=_e(e);t&&t.tagName||(t={namespaceURI:zt,tagName:"template"});const n=T(e.tagName),o=T(t.tagName);return!!Ut[e.namespaceURI]&&(e.namespaceURI===Lt?function(e,t,n){return t.namespaceURI===Mt?"svg"===e:t.namespaceURI===kt?"svg"===e&&("annotation-xml"===n||jt[n]):Boolean(Jt[e])}(n,t,o):e.namespaceURI===kt?function(e,t,n){return t.namespaceURI===Mt?"math"===e:t.namespaceURI===Lt?"math"===e&&Gt[n]:Boolean(Qt[e])}(n,t,o):e.namespaceURI===Mt?function(e,t,n){return!(t.namespaceURI===Lt&&!Gt[n])&&!(t.namespaceURI===kt&&!jt[n])&&!Qt[e]&&(Wt[e]||!Jt[e])}(n,t,o):!("application/xhtml+xml"!==Yt||!Ut[e.namespaceURI]))},tn=function(e){g(o.removed,{element:e});try{_e(e).removeChild(e)}catch(t){if(Ee(e),!_e(e))throw x("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},nn=function(e){an(e);const t=Ne(e);if(t){const e=[];m(t,(t=>{g(e,t)})),m(e,(e=>{try{Ee(e)}catch(e){}}))}const n=Oe(e);if(n)for(let t=n.length-1;t>=0;--t){const o=n[t],r=o&&o.name;if("string"==typeof r)try{e.removeAttribute(r)}catch(e){}}},on=function(e,t){try{g(o.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){g(o.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e)if(bt||Tt)try{tn(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},rn=function(e){const t=Oe(e);if(t)for(let n=t.length-1;n>=0;--n){const o=t[n],r=o&&o.name;if("string"==typeof r&&!tt[Xt(r)])try{e.removeAttribute(r)}catch(e){}}},an=function(e){const t=[e];for(;t.length>0;){const e=t.pop();(ve?ve(e):e.nodeType)===ue&&rn(e);const n=Ne(e);if(n)for(let e=n.length-1;e>=0;--e)t.push(n[e])}},ln=function(e){let t=null,n=null;if(yt)e="<remove></remove>"+e;else{const t=E(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===Yt&&zt===Mt&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const o=Re?Me(e):e;if(zt===Mt)try{t=(new z).parseFromString(o,Yt)}catch(e){}if(!t||!t.documentElement){t=Ue.createDocument(zt,"template",null);try{t.documentElement.innerHTML=Pt?Ie:o}catch(e){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(r.createTextNode(n),i.childNodes[0]||null),zt===Mt?je.call(t,mt?"html":"body")[0]:mt?t.documentElement:i},cn=function(e){return Fe.call(e.ownerDocument||e,e,k.SHOW_ELEMENT|k.SHOW_COMMENT|k.SHOW_TEXT|k.SHOW_PROCESSING_INSTRUCTION|k.SHOW_CDATA_SECTION,null)},sn=function(e){return e=A(e,We," "),e=A(e,Ye," "),e=A(e,qe," ")},un=function(e){var t;e.normalize();const n=Fe.call(e.ownerDocument||e,e,k.SHOW_TEXT|k.SHOW_COMMENT|k.SHOW_CDATA_SECTION|k.SHOW_PROCESSING_INSTRUCTION,null);let o=n.nextNode();for(;o;)o.data=sn(o.data),o=n.nextNode();const r=null===(t=e.querySelectorAll)||void 0===t?void 0:t.call(e,"template");r&&m(r,(e=>{pn(e.content)&&un(e.content)}))},fn=function(e){const t=De?De(e):null;return"string"==typeof t&&("form"===Xt(t)&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||e.attributes!==Oe(e)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes||e.nodeType!==ve(e)||e.childNodes!==Ne(e)))},pn=function(e){if(!ve||"object"!=typeof e||null===e)return!1;try{return ve(e)===he}catch(e){return!1}},mn=function(e){if(!ve||"object"!=typeof e||null===e)return!1;try{return"number"==typeof ve(e)}catch(e){return!1}};function dn(e,t,n){0!==e.length&&m(e,(e=>{e.call(o,t,n,$t)}))}const hn=function(e,t){if(dn(Ge.beforeSanitizeElements,e,null),e!==t&&null===_e(e))return!0;if(fn(e))return tn(e),!0;const n=Xt(De?De(e):e.nodeName);if(dn(Ge.uponSanitizeElement,e,{tagName:n,allowedTags:Qe}),e!==t&&null===_e(e))return!0;if(function(e,t){return!!(pt&&e.hasChildNodes()&&!mn(e.firstElementChild)&&I(ae,e.textContent)&&I(ae,e.innerHTML))||!(!pt||e.namespaceURI!==Mt||"style"!==t||!mn(e.firstElementChild))||e.nodeType===pe||!(!pt||e.nodeType!==me||!I(le,e.data))}(e,n))return tn(e),!0;if(rt[n]||!(at.tagCheck instanceof Function&&at.tagCheck(n))&&!Qe[n]){const t=function(e,t){if(!rt[t]&&bn(t)){if(ot.tagNameCheck instanceof RegExp&&I(ot.tagNameCheck,t))return!1;if(ot.tagNameCheck instanceof Function&&ot.tagNameCheck(t))return!1}if(_t&&!vt[t]){const t=_e(e),n=Ne(e);if(n&&t)for(let o=n.length-1;o>=0;--o){const r=wt?n[o]:Se(n[o],!0);t.insertBefore(r,Ae(e))}}return tn(e),!0}(e,n);return!1===t&&dn(Ge.afterSanitizeElements,e,null),t}if((ve?ve(e):e.nodeType)===ue&&!en(e))return tn(e),!0;if(("noscript"===n||"noembed"===n||"noframes"===n)&&I(ce,e.innerHTML))return tn(e),!0;if(ft&&e.nodeType===fe){const t=sn(e.textContent);e.textContent!==t&&(g(o.removed,{element:e.cloneNode()}),e.textContent=t)}return dn(Ge.afterSanitizeElements,e,null),!1},gn=function(e,t,n){if(it[t])return!1;if(pt&&"patchsrc"===t)return!1;if(pt&&"for"===t&&"label"!==e&&"output"!==e)return!1;if(Et&&("id"===t||"name"===t)&&(n in r||n in Kt))return!1;const o=tt[t]||at.attributeCheck instanceof Function&&at.attributeCheck(t,e);if(ct&&I(Xe,t));else if(lt&&I($e,t));else if(o)if(It[t]);else if(I(Je,A(n,Ve,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==N(n,"data:")||!Rt[e]){if(st&&!I(Ke,A(n,Ve,"")));else if(n)return!1}else;else if(!(bn(e)&&(ot.tagNameCheck instanceof RegExp&&I(ot.tagNameCheck,e)||ot.tagNameCheck instanceof Function&&ot.tagNameCheck(e))&&(ot.attributeNameCheck instanceof RegExp&&I(ot.attributeNameCheck,t)||ot.attributeNameCheck instanceof Function&&ot.attributeNameCheck(t,e))||"is"===t&&ot.allowCustomizedBuiltInElements&&(ot.tagNameCheck instanceof RegExp&&I(ot.tagNameCheck,n)||ot.tagNameCheck instanceof Function&&ot.tagNameCheck(n))))return!1;return!0},yn=M({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),bn=function(e){return!yn[T(e)]&&I(Ze,e)},Tn=function(e,t,n,o){if(Re&&"object"==typeof be&&"function"==typeof be.getAttributeType&&!n)switch(be.getAttributeType(e,t)){case"TrustedHTML":return Me(o);case"TrustedScriptURL":return function(e){Le(),ke++;try{return Re.createScriptURL(e)}finally{ke--}}(o)}return o},Sn=function(e,t,n,r){try{n?e.setAttributeNS(n,t,r):e.setAttribute(t,r),fn(e)?tn(e):h(o.removed)}catch(n){on(t,e)}},En=function(e){dn(Ge.beforeSanitizeAttributes,e,null);const t=e.attributes;if(!t||fn(e))return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:tt,forceKeepAttr:void 0};let o=t.length;const r=Xt(e.nodeName);for(;o--;){const i=t[o],a=i.name,l=i.namespaceURI,c=i.value,s=Xt(a),u=c;let f="value"===a?u:_(u);n.attrName=s,n.attrValue=f,n.keepAttr=!0,n.forceKeepAttr=void 0,dn(Ge.uponSanitizeAttribute,e,n),f=n.attrValue,!At||"id"!==s&&"name"!==s||0===N(f,Nt)||(on(a,e),f=Nt+f),pt&&I(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,f)?on(a,e):"attributename"===s&&E(f,"href")?on(a,e):n.forceKeepAttr||(n.keepAttr&&(ut||!I(se,f))?(ft&&(f=sn(f)),gn(r,s,f)?(f=Tn(r,s,l,f),f!==u&&Sn(e,a,l,f)):on(a,e)):on(a,e))}dn(Ge.afterSanitizeAttributes,e,null)},An=function(e){let t=null;const n=cn(e);for(dn(Ge.beforeSanitizeShadowDOM,e,null);t=n.nextNode();){dn(Ge.uponSanitizeShadowNode,t,null),hn(t,e),En(t),pn(t.content)&&An(t.content);if((ve?ve(t):t.nodeType)===ue){const e=we(t);pn(e)&&(Nn(e),An(e))}}dn(Ge.afterSanitizeShadowDOM,e,null)},Nn=function(e){const t=[{node:e,shadow:null}];for(;t.length>0;){const e=t.pop();if(e.shadow){An(e.shadow);continue}const n=e.node,o=(ve?ve(n):n.nodeType)===ue,r=Ne(n);if(r)for(let e=r.length-1;e>=0;--e)t.push({node:r[e],shadow:null});if(o){const e=De?De(n):null;if("string"==typeof e&&"template"===Xt(e)){const e=n.content;pn(e)&&t.push({node:e,shadow:null})}}if(o){const e=we(n);pn(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return o.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,r=null,a=null,l=null;if(Pt=!e,Pt&&(e="\x3c!--\x3e"),"string"!=typeof e&&!mn(e)&&"string"!=typeof(e=function(e){switch(typeof e){case"string":return e;case"number":return w(e);case"boolean":return O(e);case"bigint":return v?v(e):"0";case"symbol":return D?D(e):"Symbol()";case"undefined":default:return C(e);case"function":case"object":{if(null===e)return C(e);const t=e,n=U(t,"toString");if("function"==typeof n){const e=n(t);return"string"==typeof e?e:C(e)}return C(e)}}}(e)))throw x("dirty is not a string, aborting");if(!o.isSupported)return e;dt?(Qe=ht,tt=gt):Zt(t),(Ge.uponSanitizeElement.length>0||Ge.uponSanitizeAttribute.length>0)&&(Qe=P(Qe)),Ge.uponSanitizeAttribute.length>0&&(tt=P(tt)),o.removed=[];const c=wt&&"string"!=typeof e&&mn(e);if(c){!function(e){if(!pt)return;const t=[e];for(;t.length>0;){const e=t.pop(),n=ve?ve(e):e.nodeType;if(n===pe||n===me&&I(le,e.data)){try{Ee(e)}catch(e){}continue}if(n===ue){const t=e,n=Xt(De?De(e):e.nodeName);try{t.hasAttribute&&t.hasAttribute("patchsrc")&&t.removeAttribute("patchsrc"),t.hasAttribute&&t.hasAttribute("for")&&"label"!==n&&"output"!==n&&t.removeAttribute("for")}catch(e){}}const o=Ne(e);if(o)for(let e=o.length-1;e>=0;--e)t.push(o[e])}}(e);const t=De?De(e):e.nodeName;if("string"==typeof t){const n=Xt(t);if(!Qe[n]||rt[n])throw nn(e),x("root node is forbidden and cannot be sanitized in-place")}if(fn(e))throw nn(e),x("root node is clobbered and cannot be sanitized in-place");try{Nn(e)}catch(t){throw nn(e),t}}else if(mn(e))n=ln("\x3c!----\x3e"),r=n.ownerDocument.importNode(e,!0),r.nodeType===ue&&"BODY"===r.nodeName||"HTML"===r.nodeName?n=r:n.appendChild(r),Nn(r);else{if(!bt&&!ft&&!mt&&-1===e.indexOf("<"))return Re&&St?Me(e):e;if(n=ln(e),!n)return bt?null:St?Ie:""}n&&yt&&tn(n.firstChild);const s=c?e:n,u=cn(s);try{for(;a=u.nextNode();)hn(a,s),En(a),pn(a.content)&&An(a.content)}catch(t){throw c&&(nn(e),m(o.removed,(e=>{e.element&&an(e.element)}))),t}if(c)return m(o.removed,(e=>{e.element&&an(e.element)})),ft&&un(e),e;if(bt){if(ft&&un(n),Tt)for(l=He.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(tt.shadowroot||tt.shadowrootmode)&&(l=Be.call(i,l,!0)),l}let f=mt?n.outerHTML:n.innerHTML;return mt&&Qe["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&I(re,n.ownerDocument.doctype.name)&&(f="<!DOCTYPE "+n.ownerDocument.doctype.name+">\n"+f),ft&&(f=sn(f)),Re&&St?Me(f):f},o.setConfig=function(){Zt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),dt=!0,ht=Qe,gt=tt},o.clearConfig=function(){$t=null,dt=!1,ht=null,gt=null,Re=Ce,Ie=""},o.isValidAttribute=function(e,t,n){$t||Zt({});const o=Xt(e),r=Xt(t);return gn(o,r,n)},o.addHook=function(e,t){"function"==typeof t&&R(Ge,e)&&g(Ge[e],t)},o.removeHook=function(e,t){if(R(Ge,e)){if(void 0!==t){const n=d(Ge[e],t);return-1===n?void 0:y(Ge[e],n,1)[0]}return h(Ge[e])}},o.removeHooks=function(e){R(Ge,e)&&(Ge[e]=[])},o.removeAllHooks=function(){Ge={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},o}();exports.default=be;
|
|
2
|
+
/*! @license DOMPurify 3.4.14 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.14/LICENSE */
|
|
3
|
+
function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=Array(e);n<e;n++)o[n]=t[n];return o}function e(e,n){return function(t){if(Array.isArray(t))return t}(e)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var o,r,i,a,l=[],c=!0,s=!1;try{if(i=(n=n.call(t)).next,0===e);else for(;!(c=(o=i.call(n)).done)&&(l.push(o.value),l.length!==e);c=!0);}catch(t){s=!0,r=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(s)throw r}}return l}}(e,n)||function(e,n){if(e){if("string"==typeof e)return t(e,n);var o={}.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?t(e,n):void 0}}(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}Object.defineProperty(exports,"__esModule",{value:!0});const n=Object.entries,o=Object.setPrototypeOf,r=Object.isFrozen,i=Object.getPrototypeOf,a=Object.getOwnPropertyDescriptor;let l=Object.freeze,c=Object.seal,s=Object.create,u="undefined"!=typeof Reflect&&Reflect,f=u.apply,p=u.construct;l||(l=function(t){return t}),c||(c=function(t){return t}),f||(f=function(t,e){for(var n=arguments.length,o=new Array(n>2?n-2:0),r=2;r<n;r++)o[r-2]=arguments[r];return t.apply(e,o)}),p||(p=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),o=1;o<e;o++)n[o-1]=arguments[o];return new t(...n)});const m=L(Array.prototype.forEach),d=L(Array.prototype.lastIndexOf),h=L(Array.prototype.pop),g=L(Array.prototype.push),y=L(Array.prototype.splice),b=Array.isArray,S=L(String.prototype.toLowerCase),T=L(String.prototype.toString),A=L(String.prototype.match),E=L(String.prototype.replace),w=L(String.prototype.indexOf),v=L(String.prototype.trim),O=L(Number.prototype.toString),_=L(Boolean.prototype.toString),x="undefined"==typeof BigInt?null:L(BigInt.prototype.toString),N="undefined"==typeof Symbol?null:L(Symbol.prototype.toString),D=L(Object.prototype.hasOwnProperty),R=L(Object.prototype.toString),k=L(RegExp.prototype.test),C=(I=TypeError,function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return p(I,e)});var I;function L(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var n=arguments.length,o=new Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return f(t,e,o)}}function z(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:S;if(o&&o(t,null),!b(e))return t;let i=e.length;for(;i--;){let o=e[i];if("string"==typeof o){const t=n(o);t!==o&&(r(e)||(e[i]=t),o=t)}t[o]=!0}return t}function M(t){for(let e=0;e<t.length;e++){D(t,e)||(t[e]=null)}return t}function P(t){const o=s(null);for(const i of n(t)){var r=e(i,2);const n=r[0],a=r[1];D(t,n)&&(b(a)?o[n]=M(a):a&&"object"==typeof a&&a.constructor===Object?o[n]=P(a):o[n]=a)}return o}function U(t,e){for(;null!==t;){const n=a(t,e);if(n){if(n.get)return L(n.get);if("function"==typeof n.value)return L(n.value)}t=i(t)}return function(){return null}}const F=l(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),H=l(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),j=l(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),B=l(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),W=l(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Y=l(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),G=l(["#text"]),q=l(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),$=l(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","pointer-events","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","vector-effect","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),X=l(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),K=l(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),V=c(/{{[\w\W]*|^[\w\W]*}}/g),Z=c(/<%[\w\W]*|^[\w\W]*%>/g),J=c(/\${[\w\W]*/g),Q=c(/^data-[\-\w.\u00B7-\uFFFF]+$/),tt=c(/^aria-[\-\w]+$/),et=c(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),nt=c(/^(?:\w+script|data):/i),ot=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),rt=c(/^html$/i),it=c(/^[a-z][.\w]*(-[.\w]+)+$/i),at=c(/<[/\w!]/g),lt=c(/<[/\w]/g),ct=c(/<\/no(script|embed|frames)/i),st=c(/\/>/i),ut=1,ft=3,pt=7,mt=8,dt=9,ht=11,gt=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],yt=l(z({},gt)),bt=function(){const t={};return m(gt,(e=>{t[e]=c(new RegExp("</"+e+"(?=[\\t\\n\\f\\r />])","i"))})),l(t)}(),St=function(){return"undefined"==typeof window?null:window},Tt=function(t,e,n,o){return D(t,e)&&b(t[e])?z(o.base?P(o.base):{},t[e],o.transform):n},At=function(t,e,n){const o=D(t,e)?t[e]:void 0;return o&&"object"==typeof o?P(o):n()};var Et=function t(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:St();const o=e=>t(e);if(o.version="3.4.14",o.removed=[],!e||!e.document||e.document.nodeType!==dt||!e.Element)return o.isSupported=!1,o;let r=e.document;const i=r,a=i.currentScript;e.DocumentFragment;const u=e.HTMLTemplateElement,f=e.Node,p=e.Element,I=e.NodeFilter,L=e.NamedNodeMap;void 0===L&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;const M=e.DOMParser,gt=e.trustedTypes,Et=p.prototype,wt=U(Et,"cloneNode"),vt=U(Et,"remove"),Ot=U(Et,"nextSibling"),_t=U(Et,"childNodes"),xt=U(Et,"parentNode"),Nt=U(Et,"shadowRoot"),Dt=U(Et,"attributes"),Rt=f&&f.prototype?U(f.prototype,"nodeType"):null,kt=f&&f.prototype?U(f.prototype,"nodeName"):null,Ct=f&&f.prototype?U(f.prototype,"ownerDocument"):null,It=function(t){return Rt?Rt(t):t.nodeType},Lt=function(t){return kt?kt(t):t.nodeName};if("function"==typeof u){const t=r.createElement("template");t.content&&t.content.ownerDocument&&(r=t.content.ownerDocument)}let zt,Mt,Pt="",Ut=!1,Ft=0;const Ht=function(){if(Ft>0)throw C('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},jt=function(t){Ht(),Ft++;try{return zt.createHTML(t)}finally{Ft--}},Bt=function(){return Ut||(Mt=function(t,e){if("object"!=typeof t||"function"!=typeof t.createPolicy)return null;let n=null;const o="data-tt-policy-suffix";e&&e.hasAttribute(o)&&(n=e.getAttribute(o));const r="dompurify"+(n?"#"+n:"");try{return t.createPolicy(r,{createHTML:t=>t,createScriptURL:t=>t})}catch(t){return console.warn("TrustedTypes policy "+r+" could not be created."),null}}(gt,a),Ut=!0),Mt},Wt=r,Yt=Wt.implementation,Gt=Wt.createNodeIterator,qt=Wt.createDocumentFragment,$t=Wt.getElementsByTagName,Xt=i.importNode;let Kt={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};o.isSupported="function"==typeof n&&"function"==typeof xt&&Yt&&void 0!==Yt.createHTMLDocument;const Vt=V,Zt=Z,Jt=J,Qt=Q,te=tt,ee=nt,ne=ot,oe=it;let re=et,ie=null;const ae=z({},[...F,...H,...j,...W,...G]);let le=null;const ce=z({},[...q,...$,...X,...K]);let se=Object.seal(s(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ue=null,fe=null;const pe=Object.seal(s(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let me=!0,de=!0,he=!1,ge=!0,ye=!1,be=!0,Se=!1,Te=!1,Ae=null,Ee=null,we=!1,ve=!1,Oe=!1,_e=!1,xe=!0,Ne=!1;const De="user-content-";let Re=!0,ke=!1,Ce={},Ie=null;const Le=z({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]);let ze=null;const Me=z({},["audio","video","img","source","image","track"]);let Pe=null;const Ue=z({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Fe="http://www.w3.org/1998/Math/MathML",He="http://www.w3.org/2000/svg",je="http://www.w3.org/1999/xhtml";let Be=je,We=!1,Ye=null;const Ge=z({},[Fe,He,je],T),qe=l(["mi","mo","mn","ms","mtext"]);let $e=z({},qe);const Xe=l(["annotation-xml"]);let Ke=z({},Xe);const Ve=z({},["title","style","font","a","script"]);let Ze=null;const Je=["application/xhtml+xml","text/html"];let Qe=null,tn=null;const en=r.createElement("form"),nn=function(t){return t instanceof RegExp||t instanceof Function},on=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(tn&&tn===t)return;t&&"object"==typeof t||(t={}),t=P(t),Ze=-1===Je.indexOf(t.PARSER_MEDIA_TYPE)?"text/html":t.PARSER_MEDIA_TYPE,Qe="application/xhtml+xml"===Ze?T:S,ie=Tt(t,"ALLOWED_TAGS",ae,{transform:Qe}),le=Tt(t,"ALLOWED_ATTR",ce,{transform:Qe}),Ye=Tt(t,"ALLOWED_NAMESPACES",Ge,{transform:T}),Pe=Tt(t,"ADD_URI_SAFE_ATTR",Ue,{transform:Qe,base:Ue}),ze=Tt(t,"ADD_DATA_URI_TAGS",Me,{transform:Qe,base:Me}),Ie=Tt(t,"FORBID_CONTENTS",Le,{transform:Qe}),ue=Tt(t,"FORBID_TAGS",P({}),{transform:Qe}),fe=Tt(t,"FORBID_ATTR",P({}),{transform:Qe}),Ce=!!D(t,"USE_PROFILES")&&(t.USE_PROFILES&&"object"==typeof t.USE_PROFILES?P(t.USE_PROFILES):t.USE_PROFILES),me=!1!==t.ALLOW_ARIA_ATTR,de=!1!==t.ALLOW_DATA_ATTR,he=t.ALLOW_UNKNOWN_PROTOCOLS||!1,ge=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,ye=t.SAFE_FOR_TEMPLATES||!1,be=!1!==t.SAFE_FOR_XML,Se=t.WHOLE_DOCUMENT||!1,ve=t.RETURN_DOM||!1,Oe=t.RETURN_DOM_FRAGMENT||!1,_e=t.RETURN_TRUSTED_TYPE||!1,we=t.FORCE_BODY||!1,xe=!1!==t.SANITIZE_DOM,Ne=t.SANITIZE_NAMED_PROPS||!1,Re=!1!==t.KEEP_CONTENT,ke=t.IN_PLACE||!1,re=function(t){try{return k(t,""),!0}catch(t){return!1}}(t.ALLOWED_URI_REGEXP)?t.ALLOWED_URI_REGEXP:et,Be="string"==typeof t.NAMESPACE?t.NAMESPACE:je,$e=At(t,"MATHML_TEXT_INTEGRATION_POINTS",(()=>z({},qe))),Ke=At(t,"HTML_INTEGRATION_POINTS",(()=>z({},Xe)));const e=At(t,"CUSTOM_ELEMENT_HANDLING",(()=>s(null)));if(se=s(null),D(e,"tagNameCheck")&&nn(e.tagNameCheck)&&(se.tagNameCheck=e.tagNameCheck),D(e,"attributeNameCheck")&&nn(e.attributeNameCheck)&&(se.attributeNameCheck=e.attributeNameCheck),D(e,"allowCustomizedBuiltInElements")&&"boolean"==typeof e.allowCustomizedBuiltInElements&&(se.allowCustomizedBuiltInElements=e.allowCustomizedBuiltInElements),c(se),ye&&(de=!1),Oe&&(ve=!0),Ce&&(ie=z({},G),le=s(null),!0===Ce.html&&(z(ie,F),z(le,q)),!0===Ce.svg&&(z(ie,H),z(le,$),z(le,K)),!0===Ce.svgFilters&&(z(ie,j),z(le,$),z(le,K)),!0===Ce.mathMl&&(z(ie,W),z(le,X),z(le,K))),pe.tagCheck=null,pe.attributeCheck=null,D(t,"ADD_TAGS")&&("function"==typeof t.ADD_TAGS?pe.tagCheck=t.ADD_TAGS:b(t.ADD_TAGS)&&(ie===ae&&(ie=P(ie)),z(ie,t.ADD_TAGS,Qe))),D(t,"ADD_ATTR")&&("function"==typeof t.ADD_ATTR?pe.attributeCheck=t.ADD_ATTR:b(t.ADD_ATTR)&&(le===ce&&(le=P(le)),z(le,t.ADD_ATTR,Qe))),D(t,"ADD_FORBID_CONTENTS")&&b(t.ADD_FORBID_CONTENTS)&&(Ie===Le&&(Ie=P(Ie)),z(Ie,t.ADD_FORBID_CONTENTS,Qe)),Re&&(ie["#text"]=!0),Se&&z(ie,["html","head","body"]),ie.table&&(z(ie,["tbody"]),delete ue.tbody),t.TRUSTED_TYPES_POLICY){if("function"!=typeof t.TRUSTED_TYPES_POLICY.createHTML)throw C('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof t.TRUSTED_TYPES_POLICY.createScriptURL)throw C('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');const e=zt;zt=t.TRUSTED_TYPES_POLICY;try{Pt=jt("")}catch(t){throw zt=e,t}}else null===t.TRUSTED_TYPES_POLICY?(zt=void 0,Pt=""):(void 0===zt&&(zt=Bt()),zt&&"string"==typeof Pt&&(Pt=jt("")));l&&l(t),tn=t},rn=z({},[...H,...j,...B]),an=z({},[...W,...Y]),ln=function(t){let e=xt(t);e&&e.tagName||(e={namespaceURI:Be,tagName:"template"});const n=S(t.tagName),o=S(e.tagName);return!!Ye[t.namespaceURI]&&(t.namespaceURI===He?function(t,e,n){return e.namespaceURI===je?"svg"===t:e.namespaceURI===Fe?"svg"===t&&("annotation-xml"===n||$e[n]):Boolean(rn[t])}(n,e,o):t.namespaceURI===Fe?function(t,e,n){return e.namespaceURI===je?"math"===t:e.namespaceURI===He?"math"===t&&Ke[n]:Boolean(an[t])}(n,e,o):t.namespaceURI===je?function(t,e,n){return!(e.namespaceURI===He&&!Ke[n])&&!(e.namespaceURI===Fe&&!$e[n])&&!an[t]&&(Ve[t]||!rn[t])}(n,e,o):!("application/xhtml+xml"!==Ze||!Ye[t.namespaceURI]))},cn=function(t){g(o.removed,{element:t});try{xt(t).removeChild(t)}catch(e){if(vt(t),!xt(t))throw C("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},sn=function(t,e,n){try{t.removeAttributeNode(e)}catch(e){try{t.removeAttribute(n)}catch(t){}}},un=function(t){mn(t);const e=_t(t);if(e){const t=[];m(e,(e=>{g(t,e)})),m(t,(t=>{try{vt(t)}catch(t){}}))}const n=Dt(t);if(n)for(let e=n.length-1;e>=0;--e){const o=n[e],r=o&&o.name;"string"==typeof r&&sn(t,o,r)}},fn=function(t,e,n){if(!n)try{n=e.getAttributeNode(t)}catch(t){n=null}g(o.removed,{attribute:n||null,from:e});try{n?e.removeAttributeNode(n):e.removeAttribute(t)}catch(n){try{e.removeAttribute(t)}catch(t){}}if("is"===t)if(ve||Oe)try{cn(e)}catch(t){}else try{e.setAttribute(t,"")}catch(t){}},pn=function(t){const e=Dt(t);if(e)for(let n=e.length-1;n>=0;--n){const o=e[n],r=o&&o.name;"string"!=typeof r||le[Qe(r)]||sn(t,o,r)}},mn=function(t){const e=[t];for(;e.length>0;){const t=e.pop();It(t)===ut&&pn(t);const n=_t(t);if(n)for(let t=n.length-1;t>=0;--t)e.push(n[t])}},dn=function(t,e){return!!be&&("patchsrc"===t||"for"===t&&"label"!==e&&"output"!==e)},hn=function(t){let e=null,n=null;if(we)t="<remove></remove>"+t;else{const e=A(t,/^[\r\n\t ]+/);n=e&&e[0]}"application/xhtml+xml"===Ze&&Be===je&&(t='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+t+"</body></html>");const o=zt?jt(t):t;if(Be===je)try{e=(new M).parseFromString(o,Ze)}catch(t){}if(!e||!e.documentElement){e=Yt.createDocument(Be,"template",null);try{e.documentElement.innerHTML=We?Pt:o}catch(t){}}const i=e.body||e.documentElement;return t&&n&&i.insertBefore(r.createTextNode(n),i.childNodes[0]||null),Be===je?$t.call(e,Se?"html":"body")[0]:Se?e.documentElement:i},gn=function(t){const e=Ct?Ct(t):t.ownerDocument;return Gt.call(e||t,t,I.SHOW_ELEMENT|I.SHOW_COMMENT|I.SHOW_TEXT|I.SHOW_PROCESSING_INSTRUCTION|I.SHOW_CDATA_SECTION,null)},yn=function(t){return t=E(t,Vt," "),t=E(t,Zt," "),t=E(t,Jt," ")},bn=function(t){var e;t.normalize();const n=Ct?Ct(t):t.ownerDocument,o=Gt.call(n||t,t,I.SHOW_TEXT|I.SHOW_COMMENT|I.SHOW_CDATA_SECTION|I.SHOW_PROCESSING_INSTRUCTION,null);let r=o.nextNode();for(;r;)r.data=yn(r.data),r=o.nextNode();const i=null===(e=t.querySelectorAll)||void 0===e?void 0:e.call(t,"template");i&&m(i,(t=>{Tn(t.content)&&bn(t.content)}))},Sn=function(t){const e=kt?kt(t):null;return"string"==typeof e&&("form"===Qe(e)&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||t.attributes!==Dt(t)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore||"function"!=typeof t.hasChildNodes||t.nodeType!==Rt(t)||t.childNodes!==_t(t)))},Tn=function(t){if(!Rt||"object"!=typeof t||null===t)return!1;try{return Rt(t)===ht}catch(t){return!1}},An=function(t){if(!Rt||"object"!=typeof t||null===t)return!1;try{return"number"==typeof Rt(t)}catch(t){return!1}};function En(t,e,n){0!==t.length&&m(t,(t=>{t.call(o,e,n,tn)}))}const wn=function(t,e){if(t instanceof RegExp)return k(t,e);if(t instanceof Function){for(var n=arguments.length,o=new Array(n>2?n-2:0),r=2;r<n;r++)o[r-2]=arguments[r];return Boolean(t(e,...o))}return!1},vn=function(t,e,n,o){return 0===t.length?e:e===n||e===o?P(e):e},On=function(t,e){return t!==e&&null===xt(t)&&(ke&&mn(t),!0)},_n=function(t,e){if(En(Kt.beforeSanitizeElements,t,null),On(t,e))return!0;if(Sn(t))return cn(t),!0;const n=Qe(Lt(t));if(ie=vn(Kt.uponSanitizeElement,ie,ae,Ae),En(Kt.uponSanitizeElement,t,{tagName:n,allowedTags:ie}),On(t,e))return!0;if(function(t,e){return!!(be&&t.hasChildNodes()&&!An(t.firstElementChild)&&k(at,t.textContent)&&k(at,t.innerHTML))||!!(be&&t.namespaceURI===je&&yt[e]&&(An(t.firstElementChild)||"string"==typeof t.textContent&&k(bt[e],t.textContent)))||t.nodeType===pt||!(!be||t.nodeType!==mt||!k(lt,t.data))}(t,n))return cn(t),!0;if(ue[n]||!(pe.tagCheck instanceof Function&&pe.tagCheck(n))&&!ie[n]){const o=function(t,e,n){if(!ue[e]&&Dn(e)&&wn(se.tagNameCheck,e))return!1;if(Re&&!Ie[e]){const e=xt(t),o=_t(t);if(o&&e)for(let r=o.length-1;r>=0;--r){const i=t===n?wt(o[r],!0):o[r];e.insertBefore(i,Ot(t))}}return cn(t),!0}(t,n,e);return!1===o&&En(Kt.afterSanitizeElements,t,null),o}if(It(t)===ut&&!ln(t))return cn(t),!0;if(("noscript"===n||"noembed"===n||"noframes"===n)&&k(ct,t.innerHTML))return cn(t),!0;if(ye&&t.nodeType===ft){const e=yn(t.textContent);t.textContent!==e&&(g(o.removed,{element:t.cloneNode()}),t.textContent=e)}return En(Kt.afterSanitizeElements,t,null),!1},xn=function(t,e,n){if(fe[e])return!1;if(dn(e,t))return!1;if(xe&&("id"===e||"name"===e)&&(n in r||n in en))return!1;const o=le[e]||pe.attributeCheck instanceof Function&&pe.attributeCheck(e,t);return!(!de||!k(Qt,e))||(!(!me||!k(te,e))||(o?!!Pe[e]||(!!k(re,E(n,ne,""))||(!("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==w(n,"data:")||!ze[t])||(!(!he||k(ee,E(n,ne,"")))||!n))):Dn(t)&&wn(se.tagNameCheck,t)&&wn(se.attributeNameCheck,e,t)||"is"===e&&se.allowCustomizedBuiltInElements&&wn(se.tagNameCheck,n)))},Nn=z({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),Dn=function(t){return!Nn[S(t)]&&k(oe,t)},Rn=function(t,e,n,o){if(zt&&"object"==typeof gt&&"function"==typeof gt.getAttributeType&&!n)switch(gt.getAttributeType(t,e)){case"TrustedHTML":return jt(o);case"TrustedScriptURL":return function(t){Ht(),Ft++;try{return zt.createScriptURL(t)}finally{Ft--}}(o)}return o},kn=function(t,e,n,r){try{n?t.setAttributeNS(n,e,r):t.setAttribute(e,r),Sn(t)?cn(t):h(o.removed)}catch(n){fn(e,t)}},Cn=function(t){En(Kt.beforeSanitizeAttributes,t,null);const e=t.attributes;if(!e||Sn(t))return;le=vn(Kt.uponSanitizeAttribute,le,ce,Ee);const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:le,forceKeepAttr:void 0};let o=e.length;const r=Qe(t.nodeName);for(;o--;){const i=e[o],a=i.name,l=i.namespaceURI,c=i.value,s=Qe(a),u=c;let f="value"===a?u:v(u);n.attrName=s,n.attrValue=f,n.keepAttr=!0,n.forceKeepAttr=void 0,En(Kt.uponSanitizeAttribute,t,n),f=n.attrValue,!Ne||"id"!==s&&"name"!==s||0===w(f,De)||(fn(a,t,i),f=De+f),be&&k(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,f)?fn(a,t,i):"attributename"===s&&A(f,"href")?fn(a,t,i):n.forceKeepAttr||(n.keepAttr&&(ge||!k(st,f))?(ye&&(f=yn(f)),xn(r,s,f)?(f=Rn(r,s,l,f),f!==u&&kn(t,a,l,f)):fn(a,t,i)):fn(a,t,i))}En(Kt.afterSanitizeAttributes,t,null)},In=function(t){let e=null;const n=gn(t);for(En(Kt.beforeSanitizeShadowDOM,t,null);e=n.nextNode();)if(En(Kt.uponSanitizeShadowNode,e,null),_n(e,t),Cn(e),Tn(e.content)&&In(e.content),It(e)===ut){const t=Nt(e);Tn(t)&&(Ln(t),In(t))}En(Kt.afterSanitizeShadowDOM,t,null)},Ln=function(t){const e=[{node:t,shadow:null}];for(;e.length>0;){const t=e.pop();if(t.shadow){In(t.shadow);continue}const n=t.node,o=It(n)===ut,r=_t(n);if(r)for(let t=r.length-1;t>=0;--t)e.push({node:r[t],shadow:null});if(o){const t=kt?kt(n):null;if("string"==typeof t&&"template"===Qe(t)){const t=n.content;Tn(t)&&e.push({node:t,shadow:null})}}if(o){const t=Nt(n);Tn(t)&&e.push({node:null,shadow:t},{node:t,shadow:null})}}};return o.sanitize=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,r=null,a=null,l=null;if(We=!t,We&&(t="\x3c!--\x3e"),"string"!=typeof t&&!An(t)&&"string"!=typeof(t=function(t){switch(typeof t){case"string":return t;case"number":return O(t);case"boolean":return _(t);case"bigint":return x?x(t):"0";case"symbol":return N?N(t):"Symbol()";case"undefined":default:return R(t);case"function":case"object":{if(null===t)return R(t);const e=t,n=U(e,"toString");if("function"==typeof n){const t=n(e);return"string"==typeof t?t:R(t)}return R(t)}}}(t)))throw C("dirty is not a string, aborting");if(!o.isSupported)return t;Te?(ie=Ae,le=Ee):on(e),(Kt.uponSanitizeElement.length>0||Kt.uponSanitizeAttribute.length>0)&&(ie=P(ie)),Kt.uponSanitizeAttribute.length>0&&(le=P(le)),o.removed=[];const c=ke&&"string"!=typeof t&&An(t);if(c){!function(t){if(!be)return;const e=[t];for(;e.length>0;){const t=e.pop(),n=It(t);if(n===pt||n===mt&&k(lt,t.data)){try{vt(t)}catch(t){}continue}if(n===ut){const e=t,n=Qe(Lt(t));try{e.hasAttribute&&e.hasAttribute("patchsrc")&&e.removeAttribute("patchsrc"),e.hasAttribute&&e.hasAttribute("for")&&dn("for",n)&&e.removeAttribute("for")}catch(t){}}const o=_t(t);if(o)for(let t=o.length-1;t>=0;--t)e.push(o[t])}}(t);const e=Lt(t);if("string"==typeof e){const n=Qe(e);if(!ie[n]||ue[n])throw un(t),C("root node is forbidden and cannot be sanitized in-place")}if(Sn(t))throw un(t),C("root node is clobbered and cannot be sanitized in-place");try{Ln(t)}catch(e){throw un(t),e}}else if(An(t))n=hn("\x3c!----\x3e"),r=n.ownerDocument.importNode(t,!0),r.nodeType===ut&&"BODY"===r.nodeName||"HTML"===r.nodeName?n=r:n.appendChild(r),Ln(r);else{if(!ve&&!ye&&!Se&&-1===t.indexOf("<"))return zt&&_e?jt(t):t;if(n=hn(t),!n)return ve?null:_e?Pt:""}n&&we&&cn(n.firstChild);const s=c?t:n;try{const t=gn(s);for(;a=t.nextNode();)_n(a,s),Cn(a),Tn(a.content)&&In(a.content)}catch(e){throw c&&(un(t),m(o.removed,(t=>{t.element&&mn(t.element)}))),e}if(c)return m(o.removed,(t=>{t.element&&mn(t.element)})),ye&&bn(t),t;if(ve){if(ye&&bn(n),Oe)for(l=qt.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(le.shadowroot||le.shadowrootmode)&&(l=Xt.call(i,l,!0)),l}let u=Se?n.outerHTML:n.innerHTML;return Se&&ie["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&k(rt,n.ownerDocument.doctype.name)&&(u="<!DOCTYPE "+n.ownerDocument.doctype.name+">\n"+u),ye&&(u=yn(u)),zt&&_e?jt(u):u},o.setConfig=function(){on(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Te=!0,Ae=ie,Ee=le},o.clearConfig=function(){tn=null,Te=!1,Ae=null,Ee=null,zt=Mt,Pt=""},o.isValidAttribute=function(t,e,n){tn||on({});const o=Qe(t),r=Qe(e);return xn(o,r,n)},o.addHook=function(t,e){"function"==typeof e&&D(Kt,t)&&g(Kt[t],e)},o.removeHook=function(t,e){if(D(Kt,t)){if(void 0!==e){const n=d(Kt[t],e);return-1===n?void 0:y(Kt[t],n,1)[0]}return h(Kt[t])}},o.removeHooks=function(t){D(Kt,t)&&(Kt[t]=[])},o.removeAllHooks=function(){Kt={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},o}();exports.default=Et;
|
|
4
4
|
//# sourceMappingURL=purify.es.js.map
|