"use client" import { Carousel } from "flowbite-react"; import { useEffect, useState, useRef } from "react"; import { formatRupiah } from "@/app/library/rupiah"; import Map from 'react-map-gl'; import { dataWilayah } from "@/app/library/loadJson"; import { DateLabel } from "@/app/library/dateLabel"; import useSWR, { SWRConfig } from 'swr' import { useOutsideClick } from "@/app/library/outclick"; import { faTimes } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import Iframe from "react-iframe"; import StickyButton from "@/app/component/sticky"; import { LoaderJo } from "@/app/component/loader"; import IklanTerkait from "./iklanterkait"; import ShareButton from "./sharebutton"; import WaButton from "@/app/library/button/waButton"; import { useSession } from "next-auth/react"; const wilayah = dataWilayah(); String.prototype.capitalize = function () { // Memeriksa apakah string kosong if (this.length === 0) { return this; } // Memecah string menjadi array kata const words = this.split(' '); // Mengkapitalisasi setiap kata const capitalizedWords = words.map(word => { return word.charAt(0).toUpperCase() + word.slice(1); }); // Menggabungkan kata-kata yang sudah di-kapitalisasi return capitalizedWords.join(' '); } const fetcher = (...args) => fetch(...args).then((res) => res.json()) export default function ProdukDetail(props) { const { data: session } = useSession(); const [visible, setVisible] = useState() const ref = useOutsideClick(() => { setVisible(null) }); const [avatar, SetAvatar] = useState([]); const [arrImage, SetArrImage] = useState([]); const [data, SetData] = useState({}); const [youtube, setYoutube] = useState(null); const [maps, setMaps] = useState(null); const [tampilkanNumber, setTampilkanNumber] = useState(null); // [latitude,longitude] let log = new Date().toString(); let tgllaku = new Date().toString(); useEffect(() => { function ambilIdVideo(url) { var splitUrl = url.split("v="); if (splitUrl.length > 1) { var videoId = splitUrl[1]; var ampersandPosition = videoId.indexOf('&'); if (ampersandPosition !== -1) { videoId = videoId.substring(0, ampersandPosition); } return videoId; } else { return ""; } } function ambilIdDariYouTubeShort(url) { var idShort = null; var shortPattern = /\/shorts\/([a-zA-Z0-9_-]{11})/; var match = url.match(shortPattern); if (match !== null) { idShort = match[1]; } return idShort; } function ambilKodeYouTube(link) { var kode = ''; var url = new URL(link); if (url.hostname === 'youtu.be') { kode = url.pathname.slice(1); if (kode.includes('?')) { kode = kode.substring(0, kode.indexOf('?')); } } else if (url.hostname === 'www.youtube.com' || url.hostname === 'youtube.com') { if (url.search) { var params = new URLSearchParams(url.search); kode = params.get('v'); } else { kode = url.pathname.slice(1); if (kode === 'watch') { kode = url.searchParams.get('v'); } } } return kode; } const loadData = async function () { const produk = props.data; console.log(produk) let dataArray; if(produk.length > 0){ dataArray = produk[0]; } SetArrImage(produk); SetData(dataArray); let detectYoutube = dataArray.deskrisi.split(" "); detectYoutube.forEach(function (x) { if (x.indexOf('youtube.com') != -1 && x.indexOf('youtube.com/shorts/') != -1) { setYoutube(ambilIdDariYouTubeShort(x)); } else if (x.indexOf('youtube.com') != -1 || x.indexOf('youtu.be') != -1) { if (ambilIdVideo(x) != '') { setYoutube(ambilIdVideo(x)); } else { setYoutube(ambilKodeYouTube(x)); } } }); const lat = (wilayah.getKecamatan(dataArray.kec) === null ? "" : wilayah.getKecamatan(dataArray.kec).lat); const long = (wilayah.getKecamatan(dataArray.kec) === null ? "" : wilayah.getKecamatan(dataArray.kec).long); const mapsRender = [lat, long]; setMaps(mapsRender.join(",")) } loadData(); }, [setYoutube, props, SetAvatar]); const kec = (wilayah.getKecamatan(data.kec) === null ? "" : wilayah.getKecamatan(data.kec).nama); const kota = (wilayah.getKota(data.kota) === null ? "" : wilayah.getKota(data.kota).nama); const prov = (wilayah.getProvinsi(data.prov) === null ? "" : wilayah.getProvinsi(data.prov).nama); log = data.userlog; tgllaku = DateLabel(data.laku=='' ? tgllaku : data.tgllaku); console.log(tgllaku); return (<>