{"version":3,"file":"TextWithDots.DGDVeivb.mjs","names":["_Fragment"],"sources":["https:/framerusercontent.com/modules/HyBDEeHxQjtrGeFuMU0w/9aAesNEWOtFB89jwalQ3/PurupuruButton.js","https:/framerusercontent.com/modules/ORfK5mpdgw0NNoWE64nZ/CEqXDiKmCrqDynopjfoR/TextMaker.js","https:/framerusercontent.com/modules/X7fKw3g6UeAF4FJgMlwX/gItweN7RGoIgTuD5AMS9/TextWithDots.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect}from\"react\";// ぷるぷるアニメーションのキーフレーム\nconst purupuruKeyframes=`\n  @keyframes purupuru {\n    0% {\n      transform: rotate(0deg) skew(0deg, 0deg);\n    }\n    5% {\n      transform: rotate(5deg) skew(2.69703deg, 0deg);\n    }\n    10% {\n      transform: rotate(0deg) skew(-1.5deg, 0deg);\n    }\n    15% {\n      transform: rotate(-5deg) skew(-2.69703deg, 0deg);\n    }\n    20% {\n      transform: rotate(0deg) skew(1.5deg, 0deg);\n    }\n    25% {\n      transform: rotate(3deg) skew(2deg, 0deg);\n    }\n    30% {\n      transform: rotate(0deg) skew(0deg, 0deg);\n    }\n    35% {\n      transform: rotate(-2deg) skew(-1.8deg, 0deg);\n    }\n    40% {\n      transform: rotate(0deg) skew(0deg, 0deg);\n    }\n    100% {\n      transform: rotate(0deg) skew(0deg, 0deg);\n    }\n  }\n`;// キラッとアニメーションのキーフレーム\nconst kiranKeyframes=`\n  @keyframes kiran {\n    0% {\n      left: -10%;\n      transform: scale(5) rotate(45deg);\n      opacity: 0;\n    }\n    20% {\n      left: -10%;\n      transform: scale(5) rotate(45deg);\n      opacity: 0;\n    }\n    25% {\n      left: 10%;\n      transform: scale(15) rotate(45deg);\n      opacity: 0.6;\n    }\n    40% {\n      left: 110%;\n      transform: scale(20) rotate(45deg);\n      opacity: 0;\n    }\n    100% {\n      left: 110%;\n      transform: scale(20) rotate(45deg);\n      opacity: 0;\n    }\n  }\n`;// スタイルをheadに注入する関数\nfunction injectStyles(){const styleId=\"purupuru-kiran-animation-styles\";if(document.getElementById(styleId))return;const styles=`\n    ${purupuruKeyframes}\n    ${kiranKeyframes}\n\n    /* キラッとエフェクト用のスタイル */\n    .purupuru-kiran-wrapper {\n      position: relative;\n      overflow: hidden;\n    }\n\n    .purupuru-kiran-wrapper::before {\n      content: \"\";\n      display: block;\n      position: absolute;\n      top: 50%;\n      left: -10%;\n      width: 5px;\n      height: 100%;\n      background: linear-gradient(\n        90deg,\n        rgba(255, 255, 255, 0) 0%,\n        rgba(255, 255, 255, 0.9) 50%,\n        rgba(255, 255, 255, 0) 100%\n      );\n      transform: scale(5) rotate(45deg);\n      transform-origin: center center;\n      opacity: 0;\n      animation: kiran 3s linear 500ms infinite;\n      pointer-events: none;\n      z-index: 1;\n    }\n  `;const styleElement=document.createElement(\"style\");styleElement.id=styleId;styleElement.textContent=styles;document.head.appendChild(styleElement);}// ぷるぷるアニメーションのみ\nexport function withPurupuru(Component){return props=>{useEffect(()=>{injectStyles();},[]);return /*#__PURE__*/_jsx(Component,{...props,style:{...props.style,animation:\"purupuru 2s linear 0s infinite\",transformOrigin:\"center center\"}});};}// キラッとエフェクトのみ\nexport function withKiran(Component){return props=>{useEffect(()=>{injectStyles();},[]);return /*#__PURE__*/_jsx(Component,{...props,className:`${props.className||\"\"} purupuru-kiran-wrapper`,style:{...props.style,position:\"relative\",overflow:\"hidden\"}});};}// ぷるぷる＋キラッとエフェクト（常時ループ）\nexport function withPurupuruKiran(Component){return props=>{useEffect(()=>{injectStyles();},[]);return /*#__PURE__*/_jsx(Component,{...props,className:`${props.className||\"\"} purupuru-kiran-wrapper`,style:{...props.style,animation:\"purupuru 2s linear 0s infinite\",transformOrigin:\"center center\",position:\"relative\",overflow:\"hidden\"}});};}// クリックでアニメーション開始/停止\nexport function withTogglePurupuruKiran(Component){return props=>{useEffect(()=>{injectStyles();// トグル用のスタイルを追加\nconst toggleStyleId=\"toggle-purupuru-kiran-styles\";if(!document.getElementById(toggleStyleId)){const toggleStyles=`\n          .toggle-purupuru-kiran.active {\n            animation: purupuru 2s linear 0s infinite !important;\n          }\n\n          .toggle-purupuru-kiran.active::before {\n            animation: kiran 3s linear 500ms infinite !important;\n          }\n        `;const styleElement=document.createElement(\"style\");styleElement.id=toggleStyleId;styleElement.textContent=toggleStyles;document.head.appendChild(styleElement);}},[]);const handleClick=e=>{const element=e.currentTarget;element.classList.toggle(\"active\");// 既存のonClickハンドラーも呼ぶ\nif(props.onClick){props.onClick(e);}};return /*#__PURE__*/_jsx(Component,{...props,className:`${props.className||\"\"} purupuru-kiran-wrapper toggle-purupuru-kiran`,style:{...props.style,transformOrigin:\"center center\",position:\"relative\",overflow:\"hidden\",cursor:\"pointer\"},onClick:handleClick});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withKiran\":{\"type\":\"reactHoc\",\"name\":\"withKiran\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withTogglePurupuruKiran\":{\"type\":\"reactHoc\",\"name\":\"withTogglePurupuruKiran\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withPurupuruKiran\":{\"type\":\"reactHoc\",\"name\":\"withPurupuruKiran\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withPurupuru\":{\"type\":\"reactHoc\",\"name\":\"withPurupuru\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PurupuruButton.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect}from\"react\";function createMarkerHOC(backgroundColor){return function(Component){return props=>{useEffect(()=>{const elements=document.querySelectorAll(`.${props.className}`);elements.forEach(element=>{const originalHTML=element.innerHTML;// \"**...**\" を <mark><span>...</span></mark> に変換\nconst updatedHTML=originalHTML.replace(/\\*\\*(.+?)\\*\\*/g,(_,match)=>`<mark><span>${match}</span></mark>`);element.innerHTML=updatedHTML;});},[props]);return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n.${props.className} mark {\n  background: transparent;\n  --highlight: ${backgroundColor};\n}\n\n.${props.className} mark span {\n  background: linear-gradient(\n      120deg,\n      var(--highlight) 50%,\n      transparent 50%\n  ) no-repeat;\n  background-size: 200% 50%;\n  background-position: left bottom;\n  color: inherit;\n}\n`}),/*#__PURE__*/_jsx(Component,{...props})]});};};}export function withYellowMarker(Component){return createMarkerHOC(\"rgba(255, 255, 0, 0.8)\")(Component);}export function withBlueMarker(Component){return createMarkerHOC(\"rgba(0, 128, 255, 0.5)\")(Component);}export function withPinkMarker(Component){return createMarkerHOC(\"rgba(255, 182, 193, 0.8)\")(Component);}export function withGreenMarker(Component){return createMarkerHOC(\"rgba(144, 238, 144, 0.8)\")(Component);}export function withOrangeMarker(Component){return createMarkerHOC(\"rgba(255, 195, 0, 0.8)\")(Component);}export function withRedMarker(Component){return createMarkerHOC(\"rgba(255, 0, 0, 0.5)\")(Component);}\nexport const __FramerMetadata__ = {\"exports\":{\"withBlueMarker\":{\"type\":\"reactHoc\",\"name\":\"withBlueMarker\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withOrangeMarker\":{\"type\":\"reactHoc\",\"name\":\"withOrangeMarker\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withYellowMarker\":{\"type\":\"reactHoc\",\"name\":\"withYellowMarker\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withGreenMarker\":{\"type\":\"reactHoc\",\"name\":\"withGreenMarker\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withPinkMarker\":{\"type\":\"reactHoc\",\"name\":\"withPinkMarker\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withRedMarker\":{\"type\":\"reactHoc\",\"name\":\"withRedMarker\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextMaker.map","import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";/* ==================================================================\n   TextWithDots - 日本語傍点（圏点）による強調表示\n   ==================================================================\n\n   テキスト内の[[...]]記法を文字単位で黒丸（●）傍点付きに変換し、\n   日本語組版の伝統的な強調手法を実現するCode Override\n\n   v1.1.0: 直接実装パターン（Framer認識対応版）\n   各export関数内で処理ロジックを完全に内包\n   ================================================================== */// 小サイズの黒丸（4px）\nexport function withDotsSmall(Component){return props=>{const processDotsInChildren=children=>{if(typeof children===\"string\"){// [[]]を含む場合はdangerouslySetInnerHTMLで処理\nif(children.includes(\"[[\")){const html=children.replace(/\\[\\[([^\\]]+)\\]\\]/g,(_match,content)=>{return content.split(\"\").map(char=>{if(char===\" \"||char===\"　\")return char;return`<ruby>${char}<rt style=\"font-size: 4px !important; font-weight: 900 !important; position: relative !important; top: -4px !important;\">●</rt></ruby>`;}).join(\"\");});return /*#__PURE__*/_jsx(\"span\",{dangerouslySetInnerHTML:{__html:html}});}return children;}if(/*#__PURE__*/React.isValidElement(children)){const element=children;return /*#__PURE__*/React.cloneElement(element,{...element.props,children:processDotsInChildren(element.props.children)});}if(Array.isArray(children)){return children.map(child=>processDotsInChildren(child));}return children;};const newChildren=processDotsInChildren(props.children);return /*#__PURE__*/_jsx(Component,{...props,children:newChildren});};}// 中サイズの黒丸（8px）\nexport function withDotsMedium(Component){return props=>{const processDotsInChildren=children=>{if(typeof children===\"string\"){if(children.includes(\"[[\")){const html=children.replace(/\\[\\[([^\\]]+)\\]\\]/g,(_match,content)=>{return content.split(\"\").map(char=>{if(char===\" \"||char===\"　\")return char;return`<ruby>${char}<rt style=\"font-size: 8px !important; font-weight: 900 !important; position: relative !important; top: -4px !important;\">●</rt></ruby>`;}).join(\"\");});return /*#__PURE__*/_jsx(\"span\",{dangerouslySetInnerHTML:{__html:html}});}return children;}if(/*#__PURE__*/React.isValidElement(children)){const element=children;return /*#__PURE__*/React.cloneElement(element,{...element.props,children:processDotsInChildren(element.props.children)});}if(Array.isArray(children)){return children.map(child=>processDotsInChildren(child));}return children;};const newChildren=processDotsInChildren(props.children);return /*#__PURE__*/_jsx(Component,{...props,children:newChildren});};}// 大サイズの黒丸（14px）\nexport function withDotsLarge(Component){return props=>{const processDotsInChildren=children=>{if(typeof children===\"string\"){if(children.includes(\"[[\")){const html=children.replace(/\\[\\[([^\\]]+)\\]\\]/g,(_match,content)=>{return content.split(\"\").map(char=>{if(char===\" \"||char===\"　\")return char;return`<ruby>${char}<rt style=\"font-size: 14px !important; font-weight: 900 !important; position: relative !important; top: -4px !important;\">●</rt></ruby>`;}).join(\"\");});return /*#__PURE__*/_jsx(\"span\",{dangerouslySetInnerHTML:{__html:html}});}return children;}if(/*#__PURE__*/React.isValidElement(children)){const element=children;return /*#__PURE__*/React.cloneElement(element,{...element.props,children:processDotsInChildren(element.props.children)});}if(Array.isArray(children)){return children.map(child=>processDotsInChildren(child));}return children;};const newChildren=processDotsInChildren(props.children);return /*#__PURE__*/_jsx(Component,{...props,children:newChildren});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withDotsMedium\":{\"type\":\"reactHoc\",\"name\":\"withDotsMedium\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withDotsLarge\":{\"type\":\"reactHoc\",\"name\":\"withDotsLarge\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withDotsSmall\":{\"type\":\"reactHoc\",\"name\":\"withDotsSmall\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextWithDots.map"],"mappings":"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"}