{"id":30821202,"url":"https://github.com/letea/function-library","last_synced_at":"2025-09-06T10:48:01.248Z","repository":{"id":138451708,"uuid":"290720286","full_name":"letea/function-library","owner":"letea","description":"A function library","archived":false,"fork":false,"pushed_at":"2025-07-03T08:42:36.000Z","size":2656,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-02T20:18:39.415Z","etag":null,"topics":["developing","library","npm","working"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/letea.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-08-27T08:28:28.000Z","updated_at":"2023-04-04T21:24:14.000Z","dependencies_parsed_at":"2023-07-24T19:51:06.519Z","dependency_job_id":null,"html_url":"https://github.com/letea/function-library","commit_stats":null,"previous_names":["iamletea/function-library"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/letea/function-library","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letea%2Ffunction-library","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letea%2Ffunction-library/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letea%2Ffunction-library/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letea%2Ffunction-library/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/letea","download_url":"https://codeload.github.com/letea/function-library/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letea%2Ffunction-library/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273892839,"owners_count":25186561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["developing","library","npm","working"],"created_at":"2025-09-06T10:47:59.918Z","updated_at":"2025-09-06T10:48:01.214Z","avatar_url":"https://github.com/letea.png","language":"JavaScript","readme":"# Functions\n\n[![npm version](https://badge.fury.io/js/%40letea%2Ffunctions.svg)](https://badge.fury.io/js/%40letea%2Ffunctions)\n\nA function library.\n\n## Install\n\n```bash\nnpm install @letea/functions\n```\n\n## Contents\n\n### [Array](#array-1)\n\n* [checkIsArray](#checkisarray)\n* [checkIsArrayEmpty](#checkisarrayempty)\n* [getDuplicateValuesFromArray](#getduplicatevaluesfromarray)\n* [getIntersectionArray](#getintersectionarray)\n* [getNextIndexInArray](#getnextindexinarray)\n* [getRandomIndexInArray](#getrandomindexinarray)\n* [getRandomValueInArray](#getrandomvalueinarray)\n* [getReverseArray](#getreversearray)\n* [getShuffleArray](#getshufflearray)\n* [getSortedArray](#getsortedarray)\n* [getTrulyArray](#gettrulyarray)\n* [getUniqueArray](#getuniquearray)\n* [getUniqueValuesFromArray](#getuniquevaluesfromarray)\n\n### [Browser](#browser-1)\n\n* [checkIsBrowser](#checkisbrowser)\n* [checkIsInAppBrowserByFacebookNotLoaded](#checkisinappbrowserbyfacebooknotloaded)\n\n### [Canvas](#canvas-1)\n\n* [checkIsCanvasSupported](#checkiscanvassupported)\n\n### [Function](#function-1)\n\n* [checkIsFunction](#checkisfunction)\n\n### [LocalStorage](#localstorage-1)\n\n* [checkIsLocalStorageSupported](#checkislocalstoragesupported)\n\n### [Number](#number-1)\n\n* [checkIsInteger](#checkisinteger)\n* [checkIsNumber](#checkisnumber)\n* [getFixedNumber](#getfixednumber)\n* [getRandomNumber](#getrandomnumber)\n\n### [Object](#object-1)\n\n* [checkIsObject](#checkisobject)\n* [checkIsObjectEmpty](#checkisobjectempty)\n* [getObjectValue](#getobjectvalue)\n\n### [String](#string-1)\n\n* [checkIsEmailValid](#checkisemailvalid)\n* [checkIsMobileNumberValid](#checkismobilenumbervalid)\n* [checkIsString](#checkisstring)\n* [getRandomString](#getrandomstring)\n* [getSimpleChinese](#getsimplechinese)\n* [getStringify](#getstringify)\n* [getStringWithSpaceBetweenHalfAndFullWidth](#getstringwithspacebetweenhalfandfullwidth)\n* [getTraditionalChinese](#gettraditionalchinese)\n\n### [Time](#time-1)\n\n* [getHoursFromMinutes](#gethoursfromminutes)\n* [getHoursFromSeconds](#gethoursfromseconds)\n* [getMillisecondsFromSeconds](#getmillisecondsfromseconds)\n* [getMinutesFromHours](#getminutesfromhours)\n* [getMinutesFromSeconds](#getminutesfromseconds)\n* [getSecondsFromHours](#getsecondsfromhours)\n* [getSecondsFromMilliseconds](#getsecondsfrommilliseconds)\n* [getSecondsFromMinutes](#getsecondsfromminutes)\n\n### [URL](#url-1)\n\n* [checkIsAbsoluteURL](#checkisabsoluteurl)\n* [getCurrentURL](#getcurrenturl)\n* [getDropboxRawFileURL](#getdropboxrawfileurl)\n* [getGoogleCloudStorageFile](#getgooglecloudstoragefile)\n* [getParametersFromURL](#getparametersfromurl)\n* [getSearchFromParameters](#getsearchfromparameters)\n* [getShareToFacebookLink](#getsharetofacebooklink)\n* [getShareToLineLink](#getsharetolinelink)\n* [getURLWithoutParameters](#geturlwithoutparameters)\n* [getURLWithoutTrackingParameters](#geturlwithouttrackingparameters)\n\n### [User-Agent](#user-agent-1)\n\n* [checkIsAndroid](#checkisandroid)\n* [checkIsChrome](#checkischrome)\n* [checkIsDesktop](#checkisdesktop)\n* [checkIsEdge](#checkisedge)\n* [checkIsFirefox](#checkisfirefox)\n* [checkIsInAppBrowserByFacebook](#checkisinappbrowserbyfacebook)\n* [checkIsInAppBrowserByLine](#checkisinappbrowserbyline)\n* [checkIsInternetExplorer](#checkisinternetexplorer)\n* [checkIsiOS](#checkisios)\n* [checkIsiPad](#checkisipad)\n* [checkIsiPhone](#checkisiphone)\n* [checkIsMac](#checkismac)\n* [checkIsMobile](#checkismobile)\n* [checkIsSafari](#checkissafari)\n* [checkIsSamsungBrowser](#checkissamsungbrowser)\n* [checkIsWindows](#checkiswindows)\n* [getAndroidVersion](#getandroidversion)\n* [getiOSVersion](#getiosversion)\n\n### [Video](#video-1)\n\n* [getVideoType](#getvideotype)\n\n### [Window](#window-1)\n\n* [checkIsClipboardSupported](#checkisclipboardsupported)\n* [checkIsFullscreen](#checkisfullscreen)\n* [checkIsWindowFocused](#checkiswindowfocused)\n* [checkIsWindowLoaded](#checkiswindowloaded)\n\n# Array\n\n## checkIsArray\n\nCheck data type is an array or not.\n\n### arguments\n\n```js\nvalue; // required, any type is accepted.\n\n```\n\n### usage\n\n```js\nimport checkIsArray from \"@letea/function/checkIsArray\";\n\ncheckIsArray([1, 2, 3]);\n// true\n\ncheckIsArray(\"abc\");\n// false\n\n```\n\n## checkIsArrayEmpty\n\nCheck the array is empty or not.\n\n### arguments\n\n```js\narray = []; // required\n\n```\n\n### usage\n\n```js\nimport checkIsArrayEmpty from \"@letea/function/checkIsArrayEmpty\";\n\ncheckIsArrayEmpty([]);\n// true\n\ncheckIsArrayEmpty([1, 2, 3]);\n// false\n\n```\n\n## getDuplicateValuesFromArray\n\nGet an array with duplicate values from the original array.\n\n### arguments\n\n```js\narray = []; // required\n\n```\n\n### usage\n\n```js\nimport getDuplicateValuesFromArray from \"@letea/function/getDuplicateValuesFromArray\";\n\nconst array = [1, 2, 3, 2, 3, 4, 5];\n\ngetDuplicateValuesFromArray(array);\n// [2, 3]\n\n```\n\n## getIntersectionArray\n\nGet an intersection array.\n\n### arguments\n\n```js\narguments = {\n  array1: [], // required\n  array2: [], // required\n};\n\n```\n\n### usage\n\n```js\nimport getIntersectionArray from \"@letea/function/getIntersectionArray\";\n\ngetIntersectionArray({\n  array1: [\"a\", \"b\", \"c\"],\n  array2: [\"b\", \"c\", \"d\", \"e\", \"f\"],\n});\n// [\"b\", \"c\"]\n\n```\n\n### references\n\n* [一些JS 數組精簡技巧，要記好筆記了](https://segmentfault.com/a/1190000021840363)\n\n## getNextIndexInArray\n\nSet an array and index to get the next index. Using isLoop to get the first index if the index of input is the last one.\n\n### arguments\n\n```js\narguments = {\n  array: [], // required\n  index: 0, // optional\n  isLoop: false, // optional\n};\n\n```\n\n### usage\n\n```js\nimport getNextIndexInArray from \"@letea/function/getNextIndexInArray\";\n\nconst array = [\"a\", \"b\", \"c\", \"d\", \"e\"];\n\ngetNextIndexInArray({\n  array,\n  index: 2,\n});\n// 3\n\ngetNextIndexInArray({\n  array,\n  index: 4,\n});\n// -1\n\ngetNextIndexInArray({\n  array,\n  index: 4,\n  isLoop: true,\n});\n// 0\n\n```\n\n## getRandomIndexInArray\n\nGet a random index from the array.\n\n### arguments\n\n```js\narray = []; // required\n\n```\n\n### usage\n\n```js\nimport getRandomIndexInArray from \"@letea/function/getRandomIndexInArray\";\n\nconst array = [\"a\", \"b\", \"c\", \"d\", \"e\"];\n\ngetRandomIndexInArray(array);\n\n```\n\n## getRandomValueInArray\n\nGet a random value from the array.\n\n### arguments\n\n```js\narray = []; // required\n\n```\n\n### usage\n\n```js\nimport getRandomValueInArray from \"@letea/function/getRandomValueInArray\";\n\nconst array = [1, 2, 3, 4, 5];\n\ngetRandomValueInArray(array);\n\n```\n\n## getReverseArray\n\nGet an array with reversed.\n\n### arguments\n\n```js\narray = []; // required\n\n```\n\n### usage\n\n```js\nimport getReverseArray from \"@letea/function/getReverseArray\";\n\nconst array = [1, 2, 3, 4, 5];\n\ngetReverseArray(array);\n// [5, 4, 3, 2 ,1]\n\n```\n\n## getShuffleArray\n\nGet an array with shuffled.\n\n### arguments\n\n```js\narray = []; // required\n\n```\n\n### usage\n\n```js\nimport getShuffleArray from \"@letea/function/getShuffleArray\";\n\nconst array = [1, 2, 3, 4, 5];\n\ngetShuffleArray(array);\n// [5, 3, 2, 1, 4]...\n\n```\n\n## getSortedArray\n\nGet a sorted array.\n\n### arguments\n\n```js\narray = []; // required\n\n```\n\n### usage\n\n```js\nimport getSortedArray from \"@letea/function/getSortedArray\";\n\nconst array = [5, 3, 2, 1, 4];\n\ngetSortedArray(array);\n// [1, 2, 3, 4, 5]\n\n```\n\n## getTrulyArray\n\nGet an array with true values.\n\n### arguments\n\n```js\narray = []; // required\n\n```\n\n### usage\n\n```js\nimport getTrulyArray from \"@letea/function/getTrulyArray\";\n\nconst array = [0, \"test\", \"\", NaN, 9, true, undefined, false, Infinity, {}, []];\n\ngetTrulyArray(array);\n// [\"test\", 9, true, Infinity, {}, []]\n\n```\n\n### notes\n\n* Infinity is a true value.\n\n### references\n\n* [一些JS 數組精簡技巧，要記好筆記了](https://segmentfault.com/a/1190000021840363)\n\n## getUniqueArray\n\nGet a unique array.\n\n### arguments\n\n```js\narray = []; // required\n\n```\n\n### usage\n\n```js\nimport getUniqueArray from \"@letea/function/getUniqueArray\";\n\ngetUniqueArray([1, 2, 3, \"a\", \"b\", 2, \"c\", \"a\"]);\n// [1, 2, 3, \"a\", \"b\", \"c\"]\n\n```\n\n### references\n\n* [uniqueElements - 30 seconds of code](https://www.30secondsofcode.org/js/s/unique-elements/)\n\n## getUniqueValuesFromArray\n\nGet an array with unique values from the original array.\n\n### arguments\n\n```js\narray = []; // required\n\n```\n\n### usage\n\n```js\nimport getUniqueValuesFromArray from \"@letea/function/getUniqueValuesFromArray\";\n\nconst array = [1, 2, 3, 2, 3, 4, 5];\n\ngetUniqueValuesFromArray(array);\n// [1, 4, 5]\n\n```\n\n# Browser\n\n## checkIsBrowser\n\nCheck an environment is a browser or not by window and document.\n\n### usage\n\n```js\nimport checkIsBrowser from \"@letea/function/checkIsBrowser\";\n\n// Browser\ncheckIsBrowser();\n// true\n\n// Node.js\ncheckIsBrowser();\n// false\n\n```\n\n### references\n\n* [isBrowser - 30 seconds of code](https://www.30secondsofcode.org/js/s/is-browser)\n\n## checkIsInAppBrowserByFacebookNotLoaded\n\nFacebook's InAppBrowser has a bug: window size is not correct before the window loaded. So we need to check is loaded or not.\n\n### usage\n\n```js\nimport checkIsInAppBrowserByFacebookNotLoaded from \"@letea/function/checkIsInAppBrowserByFacebookNotLoaded\";\n\ncheckIsInAppBrowserByFacebookNotLoaded();\n// true\n\n```\n\n### notes\n\n* Only work on browsers.\n\n# Canvas\n\n## checkIsCanvasSupported\n\nCheck the browser is supports canvas or not.\n\n### usage\n\n```js\nimport checkIsCanvasSupported from \"@letea/function/checkIsCanvasSupported\";\n\ncheckIsCanvasSupported();\n// true\n\n```\n\n### notes\n\n* Only work on browsers.\n\n# Function\n\n## checkIsFunction\n\nCheck data type is function or not.\n\n### arguments\n\n```js\nvalue; // required, any type is accepted.\n\n```\n\n### usage\n\n```js\nimport checkIsFunction from \"@letea/function/checkIsFunction\";\n\ncheckIsFunction(() =\u003e {});\n// true\n\ncheckIsFunction(function () {});\n// true\n\ncheckIsFunction(\"function\");\n// false\n\n```\n\n# LocalStorage\n\n## checkIsLocalStorageSupported\n\nCheck the browser is supports local storage or not.\n\n### usage\n\n```js\nimport checkIsLocalStorageSupported from \"@letea/function/checkIsLocalStorageSupported\";\n\ncheckIsLocalStorageSupported();\n// true\n\n```\n\n### notes\n\n* Only work on browsers.\n\n# Number\n\n## checkIsInteger\n\nCheck the number is an integer or not.\n\n### arguments\n\n```js\nvalue; // required, any type is accepted.\n\n```\n\n### usage\n\n```js\nimport checkIsInteger from \"@letea/function/checkIsInteger\";\n\ncheckIsInteger(1);\n// true\n\ncheckIsInteger(1.5);\n// false\n\n```\n\n## checkIsNumber\n\nCheck data type is number or not.\n\n### arguments\n\n```js\nvalue; // required, any type is accepted.\n\n```\n\n### usage\n\n```js\nimport checkIsNumber from \"@letea/function/checkIsNumber\";\n\ncheckIsNumber(123);\n// true;\n\ncheckIsNumber(\"abc\");\n// false\n\ncheckIsNumber(NaN);\n// false\n\ncheckIsNumber(Infinity);\n// false\n\n```\n\n## getFixedNumber\n\nGet a float number with fixed option.\n\n### arguments\n\n```js\narguments = {\n  number: 0, // required.\n  fixed: 0, // optional.\n};\n\n```\n\n### usage\n\n```js\nimport getFixedNumber from \"@letea/function/getFixedNumber\";\n\ngetFixedNumber({\n  number: 3.1415926535,\n  fixed: 5,\n});\n// 3.14159\n\n```\n\n## getRandomNumber\n\nGet a random number.\n\n### arguments\n\n```js\narguments = {\n  maxNumber: 0, // required, it should be greater than minNumber.\n  minNumber: 0, // optional.\n  isFloat: false, // optional, if is true, it will return a float number.\n};\n\n```\n\n### usage\n\n```js\nimport getRandomNumber from \"@letea/function/getRandomNumber\";\n\ngetRandomNumber({\n  maxNumber: 10,\n});\n// 6\n\ngetRandomNumber({\n  maxNumber: 10,\n  minNumber: 0,\n  isFloat: true,\n});\n// 3.5476\n\n```\n\n# Object\n\n## checkIsObject\n\nCheck data type is an object or not.\n\n### arguments\n\n```js\nvalue; // required, any type is accepted.\n\n```\n\n### usage\n\n```js\nimport checkIsObject from \"@letea/function/checkIsObject\";\n\ncheckIsObject({ a: 123 });\n// true;\n\ncheckIsObject([1, 2, 3]);\n// false\n\ncheckIsObject(\"abc\");\n// false\n\n```\n\n## checkIsObjectEmpty\n\nCheck the object is empty or not.\n\n### arguments\n\n```js\nobject = {}; // required\n\n```\n\n### usage\n\n```js\nimport checkIsObjectEmpty from \"@letea/function/checkIsObjectEmpty\";\n\ncheckIsObjectEmpty({});\n// true\n\ncheckIsObjectEmpty({ a: 1 });\n// false\n\n```\n\n## getObjectValue\n\nGet the value from an object, including multiple levels.\n\n### arguments\n\n```js\narguments = {\n  object: {}, // required\n  keys: \"\", // required\n};\n\n```\n\n### usage\n\n```js\nimport getObjectValue from \"@letea/function/getObjectValue\";\n\nconst example = {\n  a: 1,\n  b: {\n    c: 2,\n    d: [3, { e: 4 }],\n  },\n};\n\ngetObjectValue({\n  object: example,\n  keys: \"a\",\n});\n// 1\n\ngetObjectValue({\n  object: example,\n  keys: \"b.c\",\n});\n// 2\n\ngetObjectValue({\n  object: example,\n  keys: \"b.d[0]\",\n});\n// 3\n\ngetObjectValue({\n  object: example,\n  keys: \"b.d[1].e\",\n});\n// 4\n\ngetObjectValue({\n  object: example,\n  keys: \"b.d[1].e.f\",\n});\n// undefined\n\n```\n\n# String\n\n## checkIsEmailValid\n\nCheck email format is valid or not.\n\n### arguments\n\n```js\nemail = \"\"; // required\n\n```\n\n### usage\n\n```js\nimport checkIsEmailValid from \"@letea/function/checkIsEmailValid\";\n\ncheckIsEmailValid(\"geon@ihateregex.io\");\ncheckIsEmailValid(\"test@gmail.com\");\ncheckIsEmailValid(\"mail@test.org\");\ncheckIsEmailValid(\"mail@testing.com\");\n// true\n\ncheckIsEmailValid();\ncheckIsEmailValid(\"hello@\");\ncheckIsEmailValid(\"@test\");\ncheckIsEmailValid(\"email@gmail\");\ncheckIsEmailValid(\"theproblem@\");\n// false\n\n```\n\n### references\n\n* [Regex Rule](https://ihateregex.io/expr/email-2)\n\n## checkIsMobileNumberValid\n\nCheck mobile number format is valid or not.\n\n### arguments\n\n```js\nmobileNumber = \"\"; // required\n\n```\n\n### usage\n\n```js\nimport checkIsMobileNumberValid from \"@letea/function/checkIsMobileNumberValid\";\n\ncheckIsMobileNumberValid(\"0912345678\");\ncheckIsMobileNumberValid(\"0912-345-678\");\ncheckIsMobileNumberValid(\"+8860912345678\");\ncheckIsMobileNumberValid(\"+886912345678\");\ncheckIsMobileNumberValid(\"+886912-345-678\");\n// true\n\ncheckIsMobileNumberValid();\ncheckIsMobileNumberValid(\"09\");\ncheckIsMobileNumberValid(\"091234567\");\ncheckIsMobileNumberValid(\"0912-345\");\ncheckIsMobileNumberValid(\"09123-45-678\");\ncheckIsMobileNumberValid(\"0912345-678\");\ncheckIsMobileNumberValid(\"0912-345678\");\ncheckIsMobileNumberValid(\"+88609\");\ncheckIsMobileNumberValid(\"+886091234567\");\ncheckIsMobileNumberValid(\"+8860912-34567\");\n// false\n\n```\n\n## checkIsString\n\nCheck data type is a string or not.\n\n### arguments\n\n```js\nvalue; // required, any type is accepted.\n\n```\n\n### usage\n\n```js\nimport checkIsString from \"@letea/function/checkIsString\";\n\ncheckIsString(\"abc\");\n// true\n\ncheckIsString(123);\n// false\n\ncheckIsString({ a: 1 });\n// false\n\n```\n\n## getRandomString\n\nGet a random string.\n\n### arguments\n\n```js\nlength = 3; // optional\n\n```\n\n### usage\n\n```js\nimport getRandomString from \"@letea/function/getRandomString\";\n\ngetRandomString();\n// \"ZI4\"\n\ngetRandomString(5);\n// \"j0C4N\"\n\n```\n\n## getSimpleChinese\n\nTransform Traditional Chinese into Simple Chinese.\n\n### arguments\n\n```js\nvalue = \"\"; // required\n\n```\n\n### usage\n\n```js\nimport getSimpleChinese from \"@letea/function/getSimpleChinese\";\n\ngetSimpleChinese(\"繁體字、簡體字\");\n// \"繁体字、简体字\"\n\n```\n\n### references\n\n* [繁簡轉換](https://github.com/mollykannn/translate-big5-gbk.git)\n\n## getStringify\n\nTransform any data into a string.\n\n### arguments\n\n```js\nvalue; // required, any type is accepted.\n\n```\n\n### usage\n\n```js\nimport getStringify from \"@letea/function/getStringify\";\n\ngetStringify(123);\n// \"123\"\n\ngetStringify({ a: 123, b: undefined, c: Infinity, d: NaN });\n// \"{a:123, b:undefined, c:Infinity, d:NaN}\"\n\ngetStringify([123, 234, undefined, Infinity, NaN]);\n// \"[123, 234, undefined, Infinity, NaN]\"\n\n```\n\n## getStringWithSpaceBetweenHalfAndFullWidth\n\nGet a string with space between half and full with characters.\n\n### arguments\n\n```js\ntext = \"\"; // required\n\n```\n\n### usage\n\n```js\nimport getStringWithSpaceBetweenHalfAndFullWidth from \"@letea/function/getStringWithSpaceBetweenHalfAndFullWidth\";\n\ngetStringWithSpaceBetweenHalfAndFullWidth(\"我是很busy，因為我很多things要do\");\n// \"我是很 busy，因為我很多 things 要 do\"\n\n```\n\n### references\n\n* [為什麼你們就是不能加個空格呢？](https://github.com/vinta/pangu.js)\n\n## getTraditionalChinese\n\nTransform Simple Chinese into Traditional Chinese.\n\n### arguments\n\n```js\nvalue = \"\"; // required\n\n```\n\n### usage\n\n```js\nimport getTraditionalChinese from \"@letea/function/getTraditionalChinese\";\n\ngetTraditionalChinese(\"繁体字、简体字\");\n// \"繁體字、簡體字\"\n\n```\n\n### references\n\n* [繁簡轉換](https://github.com/mollykannn/translate-big5-gbk.git)\n\n# Time\n\n## getHoursFromMinutes\n\nMinutes to hours.\n\n### arguments\n\n```js\nminutes = 0; // required\n\n```\n\n### usage\n\n```js\nimport getHoursFromMinutes from \"@letea/function/getHoursFromMinutes\";\n\ngetHoursFromMinutes(60);\n// 1\n\n```\n\n## getHoursFromSeconds\n\nSeconds to hours.\n\n### arguments\n\n```js\nseconds = 0; // required\n\n```\n\n### usage\n\n```js\nimport getHoursFromSeconds from \"@letea/function/getHoursFromSeconds\";\n\ngetHoursFromSeconds(3600);\n// 1\n\n```\n\n## getMillisecondsFromSeconds\n\nSeconds to milliseconds\n\n### arguments\n\n```js\nseconds = 0; // required\n\n```\n\n### usage\n\n```js\nimport getMillisecondsFromSeconds from \"@letea/function/getMillisecondsFromSeconds\";\n\ngetMillisecondsFromSeconds(1);\n// 1000\n\n```\n\n## getMinutesFromHours\n\nHours to minutes.\n\n### arguments\n\n```js\nhours = 0; // required\n\n```\n\n### usage\n\n```js\nimport getMinutesFromHours from \"@letea/function/getMinutesFromHours\";\n\ngetMinutesFromHours(1);\n// 60\n\n```\n\n## getMinutesFromSeconds\n\nSeconds to minutes.\n\n### arguments\n\n```js\nseconds = 0; // required\n\n```\n\n### usage\n\n```js\nimport getMinutesFromSeconds from \"@letea/function/getMinutesFromSeconds\";\n\ngetMinutesFromSeconds(60);\n// 1\n\n```\n\n## getSecondsFromHours\n\nHours to seconds.\n\n### arguments\n\n```js\nhours = 0; // required\n\n```\n\n### usage\n\n```js\nimport getSecondsFromHours from \"@letea/function/getSecondsFromHours\";\n\ngetSecondsFromHours(1);\n// 3600\n\n```\n\n## getSecondsFromMilliseconds\n\nMilliseconds to seconds.\n\n### arguments\n\n```js\nmilliseconds = 0; // required\n\n```\n\n### usage\n\n```js\nimport getSecondsFromMilliseconds from \"@letea/function/getSecondsFromMilliseconds\";\n\ngetSecondsFromMilliseconds(1000);\n// 1\n\n```\n\n## getSecondsFromMinutes\n\nMinutes to Seconds.\n\n### arguments\n\n```js\nminutes = 0; // required\n\n```\n\n### usage\n\n```js\nimport getSecondsFromMinutes from \"@letea/function/getSecondsFromMinutes\";\n\ngetSecondsFromMinutes(1);\n// 60\n\n```\n\n# URL\n\n## checkIsAbsoluteURL\n\nCheck the URL is absolute or not.\n\n### arguments\n\n```js\nurl = \"\"; // required\n\n```\n\n### usage\n\n```js\nimport checkIsAbsoluteURL from \"@letea/function/checkIsAbsoluteURL\";\n\ncheckIsAbsoluteURL(\"https://google.com\");\n// true\n\ncheckIsAbsoluteURL(\"ftp://www.myserver.net\");\n// true\n\ncheckIsAbsoluteURL(\"/foo/bar\");\n// false\n\n```\n\n### references\n\n* [isAbsoluteURL - 30 seconds of code](https://www.30secondsofcode.org/js/s/is-absolute-url/)\n\n## getCurrentURL\n\nGet current site's URL. For now can get URL without search or trim tracking parameters(Google \u0026 Facebook).\n\n### arguments\n\n```js\narguments = {\n  hasSearch: true, // optional.\n  trimTracking: false, // optional, if hasSearch is true then trimTracking will do nothing.\n};\n\n```\n\n### usage\n\n```js\nimport getCurrentURL from \"@letea/function/getCurrentURL\";\n\n// if window.location.href is \"https://google.com/tw/?a=%E5%80%BC\u0026utm_source=value\u0026utm_medium=value\u0026utm_campaign=value\u0026utm_term=value\u0026utm_content=value\u0026ad_id=value\u0026adset_id=value\u0026campaign_id=value\u0026ad_name=value\u0026adset_name=value\u0026campaign_name=value\u0026placement=value\u0026site_source_name=value\"\ngetCurrentURL();\n// \"https://google.com/tw/?a=%E5%80%BC\u0026utm_source=value\u0026utm_medium=value\u0026utm_campaign=value\u0026utm_term=value\u0026utm_content=value\u0026ad_id=value\u0026adset_id=value\u0026campaign_id=value\u0026ad_name=value\u0026adset_name=value\u0026campaign_name=value\u0026placement=value\u0026site_source_name=value\"\n\ngetCurrentURL({\n  hasSearch: false,\n});\n// \"https://google.com/tw/\"\n\ngetCurrentURL({\n  trimTracking: true,\n});\n// https://google.com/tw/?a=%E5%80%BC\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## getDropboxRawFileURL\n\nGet a file URL that can be linked from Dropbox directly.\n\n### arguments\n\n```js\nfilePath = \"\"; // required, the format is \"id/filename\"\n\n```\n\n### usage\n\n```js\nimport getDropboxRawFileURL from \"@letea/function/getDropboxRawFileURL\";\n\ngetDropboxRawFileURL(\"0xp0v2cm3asbk0h/sample.jpg\");\n// https://www.dropbox.com/s/0xp0v2cm3asbk0h/sample.jpg?raw=1\n\n```\n\n### references\n\n* [How to Force a Shared Link to Download or Render - Dropbox](https://help.dropbox.com/files-folders/share/force-download)\n\n## getGoogleCloudStorageFile\n\nGet a file URL that can be linked from Google Cloud Storage.\n\n### arguments\n\n```js\nfilePath = \"\"; // required, the format is \"project/filename\"\n\n```\n\n### usage\n\n```js\nimport getGoogleCloudStorageFile from \"@letea/function/getGoogleCloudStorageFile\";\n\ngetGoogleCloudStorageFile(\"storybook.letea.me/issue-img-webp.jpg\");\n// https://storage.googleapis.com/storybook.letea.me/issue-img-webp.jpg\n\n```\n\n### notes\n\n* Public bucket only\n\n## getParametersFromURL\n\nTransform URL's search into an object.\n\n### arguments\n\n```js\nurl = \"\"; // required\n\n```\n\n### usage\n\n```js\nimport getParametersFromURL from \"@letea/function/getParametersFromURL\";\n\ngetParametersFromURL(\"http://example.com/?a=1\");\n// { a: 1 }\n\ngetParametersFromURL(\"http://example.com/?a=1\u0026b=2\u0026c=3\");\n// { a: 1, b: 2, c: 3 }\n\ngetParametersFromURL(\"?a=1\");\n// { a: 1 }\n\ngetParametersFromURL(\"?a=1\u0026b=2\u0026c=3\");\n// { a: 1, b: 2, c: 3 }\n\ngetParametersFromURL(\"?a=%E5%80%BC\");\n// { a: \"值\" }\n\ngetParametersFromURL(\"http://example.com/\");\n// {}\n\n```\n\n## getSearchFromParameters\n\nTransform an object into a search for a URL.\n\n### arguments\n\n```js\nparameters = {}; // required\n\n```\n\n### usage\n\n```js\nimport getSearchFromParameters from \"@letea/function/getSearchFromParameters\";\n\ngetSearchFromParameters({ a: 1 });\n// \"?a=1\"\n\ngetSearchFromParameters({ a: 1, b: 2, c: 3 });\n// \"?a=1\u0026b=2\u0026c=3\"\n\ngetSearchFromParameters({ a: 1 });\n// \"?a=1\"\n\ngetSearchFromParameters({ a: 1, b: 2, c: 3 });\n// \"?a=1\u0026b=2\u0026c=3\"\n\ngetSearchFromParameters({ a: \"值\" });\n// \"?a=%E5%80%BC\"\n\ngetSearchFromParameters({});\n// \"\"\n\n```\n\n## getShareToFacebookLink\n\nGet a link that can direct to the Facebook Share Page.\n\n### arguments\n\n```js\nurl = \"\"; // optional, if empty, it's will using location.href.\n\n```\n\n### usage\n\n```js\nimport getShareToFacebookLink from \"@letea/function/getShareToFacebookLink\";\n\ngetShareToFacebookLink();\n// \"https://www.facebook.com/sharer/sharer.php?u={location.href}\"\n\ngetShareToFacebookLink(\"https://google.com\");\n// \"https://www.facebook.com/sharer/sharer.php?u=https://google.com\"\n\n```\n\n### notes\n\n* Only work on browsers.\n\n### references\n\n* [Facebook](https://www.facebook.com/sharer/sharer.php)\n\n## getShareToLineLink\n\nGet a link that can direct to the Line Share Page.\n\n### arguments\n\n```js\narguments = {\n  url: \"\", // optional, if empty, it's will using location.href.\n  message: \"\", // optional\n};\n\n```\n\n### usage\n\n```js\nimport getShareToLineLink from \"@letea/function/getShareToLineLink\";\n\ngetShareToLineLink();\n// \"http://line.naver.jp/R/msg/text/?%0D%0A{location.href}\"\n\ngetShareToLineLink({ url: \"https://google.com\", message: \"OK Google\" });\n// \"http://line.naver.jp/R/msg/text/?OK%20Google%0D%0Ahttps://google.com\"\n\n```\n\n### notes\n\n* Only work on browsers.\n\n### references\n\n* [Line Social Plugins](https://media.line.me/zh_TW/how_to_install#lineitbutton)\n\n## getURLWithoutParameters\n\nTrim URL's search.\n\n### arguments\n\n```js\nurl = \"\"; // required\n\n```\n\n### usage\n\n```js\nimport getURLWithoutParameters from \"@letea/function/getURLWithoutParameters\";\n\ngetURLWithoutParameters(\"http://example.com/?a=1\");\n// http://example.com/\n\ngetURLWithoutParameters(\"http://example.com/?a=1\u0026b=2\u0026c=3\");\n// http://example.com/\n\ngetURLWithoutParameters(\"http://example.com/?a=%E5%80%BC\");\n// http://example.com/\n\ngetURLWithoutParameters(\"http://example.com/\");\n// http://example.com/\n\n```\n\n## getURLWithoutTrackingParameters\n\nTo filter URL's search(Tracking Parameters), including Google, Facebook for now.\n\n### arguments\n\n```js\nurl = \"\"; // required\n\n```\n\n### usage\n\n```js\nimport getURLWithoutTrackingParameters from \"@letea/function/getURLWithoutTrackingParameters\";\n\ngetURLWithoutTrackingParameters(\n  \"http://google.com/?utm_source=value\u0026utm_medium=value\u0026utm_campaign=value\u0026utm_term=value\u0026utm_content=value\"\n);\n// \"http://google.com/\"\n\ngetURLWithoutTrackingParameters(\n  \"http://facebook.com/?ad_id=value\u0026adset_id=value\u0026campaign_id=value\u0026ad_name=value\u0026adset_name=value\u0026campaign_name=value\u0026placement=value\u0026site_source_name=value\u0026fclid=value\"\n);\n// \"http://facebook.com/\"\n\ngetURLWithoutTrackingParameters(\n  \"http://google.com/?a=123\u0026utm_source=value\u0026utm_medium=value\u0026utm_campaign=value\u0026utm_term=value\u0026utm_content=value\u0026gclid=value\"\n);\n// \"http://google.com/?a=123\"\n\n```\n\n### references\n\n* [Google: Campaign URL Builder](https://ga-dev-tools.appspot.com/campaign-url-builder/)\n* [Facebook Business: 關於網址參數](https://www.facebook.com/business/help/1016122818401732)\n\n# User-Agent\n\n## checkIsAndroid\n\nCheck is Android by the window\\.navigator.userAgent\n\n### usage\n\n```js\nimport checkIsAndroid from \"@letea/function/checkIsAndroid\";\n\n// Mozilla/5.0 (Linux; Android 8.0.0; HTC_M10h) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36\ncheckIsAndroid();\n// true\n\n// Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/79.0.3945.73 Mobile/15E148 Safari/604.1\ncheckIsAndroid();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsChrome\n\nCheck is Chrome by the window\\.navigator.userAgent.\n\n### usage\n\n```js\nimport checkIsChrome from \"@letea/function/checkIsChrome\";\n\n// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36\ncheckIsChrome();\n// true\n\n// Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:72.0) Gecko/20100101 Firefox/72.0\ncheckIsChrome();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsDesktop\n\nCheck is Desktop Device by the window\\.navigator.userAgent.\n\n### usage\n\n```js\nimport checkIsDesktop from \"@letea/function/checkIsDesktop\";\n\n// Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36\ncheckIsDesktop();\n// true\n\n// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36\ncheckIsDesktop();\n// true\n\n// Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.4 Mobile/15E148 Safari/604.1\ncheckIsDesktop();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsEdge\n\nCheck is Edge by the window\\.navigator.userAgent.\n\n### usage\n\n```js\nimport checkIsEdge from \"@letea/function/checkIsEdge\";\n\n// Mozilla/5.0 (iPad; CPU OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 EdgiOS/44.11.15 Mobile/15E148 Safari/605.1.15\ncheckIsEdge();\n// true\n\n// Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:72.0) Gecko/20100101 Firefox/72.0\ncheckIsEdge();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsFirefox\n\nCheck is Firefox by the window\\.navigator.userAgent.\n\n### usage\n\n```js\nimport checkIsFirefox from \"@letea/function/checkIsFirefox\";\n\n// Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:72.0) Gecko/20100101 Firefox/72.0\ncheckIsFirefox();\n// true\n\n// Mozilla/5.0 (iPad; CPU OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 EdgiOS/44.11.15 Mobile/15E148 Safari/605.1.15\ncheckIsFirefox();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsInAppBrowserByFacebook\n\nCheck is InAppBrowser by Facebook using window\\.navigator.userAgent.\n\n### usage\n\n```js\nimport checkIsInAppBrowserByFacebook from \"@letea/function/checkIsInAppBrowserByFacebook\";\n\n// Mozilla/5.0 (Linux; Android 8.0.0; HTC_M10h Build/OPR1.170623.027; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.136 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/255.0.0.33.121;]\ncheckIsInAppBrowserByFacebook();\n// true\n\n// Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Safari Line/10.0.2\ncheckIsInAppBrowserByFacebook();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsInAppBrowserByLine\n\nCheck is InAppBrowser by Line using window\\.navigator.userAgent.\n\n### usage\n\n```js\nimport checkIsInAppBrowserByLine from \"@letea/function/checkIsInAppBrowserByLine\";\n\n// Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Safari Line/10.0.2\ncheckIsInAppBrowserByLine();\n// true\n\n// Mozilla/5.0 (Linux; Android 8.0.0; HTC_M10h Build/OPR1.170623.027; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.136 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/255.0.0.33.121;]\ncheckIsInAppBrowserByLine();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsInternetExplorer\n\nCheck is Internet Explorer by the window\\.navigator.userAgent\n\n### usage\n\n```js\nimport checkIsInternetExplorer from \"@letea/function/checkIsInternetExplorer\";\n\n// Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; rv:11.0) like Gecko\ncheckIsInternetExplorer();\n// true\n\n// Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)\ncheckIsInternetExplorer();\n// true\n\n// Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)\ncheckIsInternetExplorer();\n// true\n\n// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36\ncheckIsInternetExplorer();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsiOS\n\nCheck is iOS by the window\\.navigator.userAgent.\n\n### usage\n\n```js\nimport checkIsiOS from \"@letea/function/checkIsiOS\";\n\n// Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/79.0.3945.73 Mobile/15E148 Safari/604.1\ncheckIsiOS();\n// true\n\n// Mozilla/5.0 (iPad; CPU OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.4 Mobile/15E148 Safari/604.1\ncheckIsiOS();\n// true\n\n// Mozilla/5.0 (Linux; Android 8.0.0; HTC_M10h) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36\ncheckIsiOS();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsiPad\n\nCheck is iPad by the window\\.navigator.userAgent.\n\n### usage\n\n```js\nimport checkIsiPad from \"@letea/function/checkIsiPad\";\n\n// Mozilla/5.0 (iPad; CPU OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.4 Mobile/15E148 Safari/604.1\ncheckIsiPad();\n// true\n\n// Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/79.0.3945.73 Mobile/15E148 Safari/604.1\ncheckIsiPad();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsiPhone\n\nCheck is iPhone by the window\\.navigator.userAgent.\n\n### usage\n\n```js\nimport checkIsiPhone from \"@letea/function/checkIsiPhone\";\n\n// Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/79.0.3945.73 Mobile/15E148 Safari/604.1\ncheckIsiPhone();\n// true\n\n// Mozilla/5.0 (iPad; CPU OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.4 Mobile/15E148 Safari/604.1\ncheckIsiPhone();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsMac\n\nCheck is macOS by the window\\.navigator.userAgent.\n\n### usage\n\n```js\nimport checkIsMac from \"@letea/function/checkIsMac\";\n\n// Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.4 Safari/605.1.15\ncheckIsMac();\n// true\n\n// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 Edg/80.0.361.48\ncheckIsMac();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsMobile\n\nCheck is Mobile Device by the window\\.navigator.userAgent.\n\n### usage\n\n```js\nimport checkIsMobile from \"@letea/function/checkIsMobile\";\n\n// Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/79.0.3945.73 Mobile/15E148 Safari/604.1\ncheckIsMobile();\n// true\n\n// Mozilla/5.0 (Linux; Android 8.0.0; HTC_M10h) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36\ncheckIsMobile();\n// true\n\n// Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36\ncheckIsMobile();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsSafari\n\nCheck is Safari by the window\\.navigator.userAgent.\n\n### usage\n\n```js\nimport checkIsSafari from \"@letea/function/checkIsSafari\";\n\n// Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.4 Safari/605.1.15\ncheckIsSafari();\n// true\n\n// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 Edg/80.0.361.48\ncheckIsSafari();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsSamsungBrowser\n\nCheck is Samsung Browser by the window\\.navigator.userAgent.\n\n### usage\n\n```js\nimport checkIsSamsungBrowser from \"@letea/function/checkIsSamsungBrowser\";\n\n// Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-N9750) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/10.2 Chrome/71.0.3578.99 Mobile Safari/537.36\ncheckIsSamsugnBrowser();\n// true\n\n// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 Edg/80.0.361.48\ncheckIsSamsugnBrowser();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsWindows\n\nCheck is Windows by the window\\.navigator.userAgent.\n\n### usage\n\n```js\nimport checkIsWindows from \"@letea/function/checkIsWindows\";\n\n// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 Edg/80.0.361.48\ncheckIsWindows();\n// true\n\n// Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.4 Safari/605.1.15\ncheckIsWindows();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## getAndroidVersion\n\nGet Android Version from the window\\.navigator.userAgent. If the userAgent is not iOS or not found, it will return \"\".\n\n### usage\n\n```js\nimport getAndroidVersion from \"@letea/function/getAndroidVersion\";\n\n// User-Agent: Mozilla/5.0 (Linux; Android 8.0.0; HTC_M10h) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36\ngetAndroidVersion();\n// \"8.0.0\"\n\n// User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/79.0.3945.73 Mobile/15E148 Safari/604.1\ngetAndroidVersion();\n// \"\"\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## getiOSVersion\n\nGet iOS Version from window\\.navigator.userAgent. If the userAgent is not iOS or not found, it will return \"\".\n\n### usage\n\n```js\nimport getiOSVersion from \"@letea/function/getiOSVersion\";\n\n// User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/79.0.3945.73 Mobile/15E148 Safari/604.1\ngetiOSVersion();\n// \"13.3\"\n\n// User-Agent: Mozilla/5.0 (Linux; Android 8.0.0; HTC_M10h) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36\ngetiOSVersion();\n// \"\"\n\n```\n\n### notes\n\n* Only work on browsers.\n\n# Video\n\n## getVideoType\n\nGet video type for video \u0026 source tag.\n\n### arguments\n\n```js\nsrc = \"\"; // required\n\n```\n\n### usage\n\n```js\nimport getVideoType from \"@letea/function/getVideoType\";\n\ngetVideoType(\"https://example.com/file/video.mp4\");\n// \"video/mp4\"\n\n```\n\n# Window\n\n## checkIsClipboardSupported\n\nCheck the browser is supports the clipboard or not.\n\n### usage\n\n```js\nimport checkIsClipboardSupported from \"@letea/function/checkIsClipboardSupported\";\n\n// When Browser support clipboard\ncheckIsClipboardSupported();\n// true\n\n// When Browser is not support clipboard\ncheckIsClipboardSupported();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n### references\n\n* [clipboard.js](https://clipboardjs.com/)\n\n## checkIsFullscreen\n\nCheck the browser is fullscreen or not.\n\n### usage\n\n```js\nimport checkIsFullscreen from \"@letea/function/checkIsFullscreen\";\n\n// When Fullscreen\ncheckIsFullscreen();\n// true\n\n// When Normal\ncheckIsFullscreen();\n// false\n\n```\n\n### notes\n\n* Only work on browsers.\n\n## checkIsWindowFocused\n\nCheck Window is focused or not.\n\n### usage\n\n```js\nimport checkIsWindowFocused from \"@letea/function/checkIsWindowFocused\";\n\ncheckIsWindowFocused();\n// true (when window has focus actually.)\n\n```\n\n### notes\n\n* Only work on browsers.\n\n### references\n\n* [Document.hasFocus() - Web APIs | MDN](https://developer.mozilla.org/en-US/docs/Web/API/Document/hasFocus)\n\n## checkIsWindowLoaded\n\nCheck Window is loaded or not.\n\n### usage\n\n```js\nimport checkIsWindowLoaded from \"@letea/function/checkIsWindowLoaded\";\n\ncheckIsWindowLoaded();\n// true\n\n```\n\n### notes\n\n* Only work on browsers.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fletea%2Ffunction-library","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fletea%2Ffunction-library","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fletea%2Ffunction-library/lists"}