PageSourceSearch

https://jefunited.co.jp/asset/js/jefnow.js?20230520

js jefunited.co.jp collected 2026-10-02 05:08:28 UTC 14,282 bytes, 264 lines download raw bytes

1const jefnowComponent = {
2  props: ["jefnowflag", "overlayflag", "jefnowclose"],
3  template: `<article class="l-jefnow" :class="{'-active': jefnowflag}">
4	<div class="l-jefnow__inner">
5		<div class="l-jefnow__head">
6			<h3 class="l-jefnow__ttl">JEF NOW</h3>
7			<button class="l-jefnow__close" @click="$emit('jefnowclose')"></button>
8			<div class="l-jefnow__tab">
9				<div class="l-jefnow__tab__list">
10					<button @click="categorySelect('news')" class="l-jefnow__tab__btn" :class="{'-active': selectCategoryList.includes('news')}">
11						<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26" style="enable-background:new 0 0 26 26" xml:space="preserve"><path fill="#666" d="M22.2 24.5H3.8c-1.6 0-2.8-1.3-2.8-2.9V2.4c0-.5.4-.9.9-.9h18.3c.5 0 .9.4.9.9v9h4v10.2c-.1 1.6-1.4 2.9-2.9 2.9zM19.3 3.3H2.7v18.3c0 .6.5 1.1 1.1 1.1h15.5V3.3zm4 9.9h-2.2v8.4c0 .6.5 1.1 1.1 1.1s1.1-.5 1.1-1.1v-8.4zm-7.2-4.6H5.9V6.8h10.2v1.8zm0 4.3H5.9v-1.8h10.2v1.8zm-2.5 4.3H5.9v-1.8h7.6v1.8z"/></svg>
12						<span>NEWS</span>
13					</button>
14          <!--
15					<button @click="categorySelect('twitter')" class="l-jefnow__tab__btn" :class="{'-active': selectCategoryList.includes('twitter')}">
16						<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26" style="enable-background:new 0 0 26 26" xml:space="preserve"><path fill="#666" d="M26 4.6c-1 .4-2 .7-3.1.9 1.1-.7 1.9-1.8 2.3-3.1-1 .6-2.2 1.1-3.4 1.3-.9-1-2.3-1.7-3.8-1.7-2.9 0-5.3 2.5-5.3 5.6 0 .4 0 .9.1 1.3-4.4-.3-8.4-2.5-11-5.9-.4.8-.7 1.8-.7 2.8 0 1.9.9 3.6 2.4 4.6-.9 0-1.7-.3-2.4-.7v.1c0 2.7 1.8 4.9 4.3 5.4-.4.1-.9.2-1.4.2-.3 0-.7 0-1-.1.7 2.2 2.6 3.8 5 3.8-1.8 1.5-4.1 2.4-6.6 2.4-.4 0-.9 0-1.3-.1C2.4 23.1 5.2 24 8.2 24c9.8 0 15.2-8.5 15.2-15.8v-.7c1-.8 1.9-1.8 2.6-2.9"/></svg>
17						<span>Twitter</span>
18					</button>
19          -->
20					<button @click="categorySelect('instagram')" class="l-jefnow__tab__btn" :class="{'-active': selectCategoryList.includes('instagram')}">
21						<svg xmlns="http://www.w3.org/2000/svg" width="26.012" height="25.987" viewBox="0 0 26.012 25.987" xml:space="preserve"><path fill="#666" d="M13.006 3.155c3.204 0 3.583.012 4.849.07 1.17.054 1.806.249 2.228.414.56.218.96.478 1.38.897.42.42.68.82.897 1.38.164.423.36 1.058.414 2.228.058 1.266.07 1.645.07 4.849s-.012 3.584-.069 4.849c-.054 1.17-.249 1.806-.414 2.228-.218.56-.478.96-.897 1.38-.42.42-.82.68-1.38.897-.423.164-1.058.36-2.228.414-1.266.058-1.645.07-4.849.07s-3.584-.012-4.849-.07c-1.17-.054-1.806-.249-2.228-.414a3.734 3.734 0 0 1-1.38-.897 3.71 3.71 0 0 1-.897-1.38c-.164-.423-.36-1.058-.414-2.228-.058-1.266-.071-1.645-.071-4.849s.012-3.583.07-4.848c.054-1.17.249-1.806.414-2.228.218-.56.478-.96.897-1.38.42-.42.82-.68 1.38-.897.423-.164 1.058-.36 2.228-.414 1.266-.058 1.645-.071 4.849-.071m0-2.162c-3.259 0-3.667.014-4.948.072-1.278.058-2.15.261-2.913.558-.788.307-1.457.717-2.125 1.385S1.943 4.344 1.636 5.133c-.297.764-.5 1.636-.558 2.913-.058 1.28-.072 1.688-.072 4.948s.014 3.667.072 4.948c.058 1.278.261 2.15.558 2.913a5.885 5.885 0 0 0 1.384 2.126 5.881 5.881 0 0 0 2.126 1.384c.763.296 1.636.499 2.913.558 1.28.058 1.688.072 4.948.072s3.667-.014 4.948-.072c1.278-.058 2.15-.261 2.913-.558a5.885 5.885 0 0 0 2.126-1.384 5.881 5.881 0 0 0 1.384-2.126c.296-.763.499-1.636.558-2.913.058-1.28.072-1.688.072-4.948s-.014-3.667-.072-4.948
21c-.058-1.278-.261-2.15-.558-2.913-.306-.789-.717-1.458-1.384-2.126s-1.337-1.077-2.126-1.384c-.763-.296-1.636-.499-2.913-.558-1.282-.058-1.69-.072-4.949-.072zm0 5.838a6.162 6.162 0 1 0 0 12.324 6.162 6.162 0 0 0 0-12.324zm0 10.162a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm6.405-11.845a1.44 1.44 0 1 1 0 2.88 1.44 1.44 0 1 1 0-2.88z"/></svg>
22						<span>Instagram</span>
23					</button>
24					<button @click="categorySelect('youtube')" class="l-jefnow__tab__btn" :class="{'-active': selectCategoryList.includes('youtube')}">
25						<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26" style="enable-background:new 0 0 26 26" xml:space="preserve"><path fill="#666" d="M25.5 6.5c-.3-1.2-1.2-2.1-2.3-2.4-2.1-.6-10.2-.6-10.2-.6s-8.1 0-10.2.6C1.7 4.4.8 5.3.5 6.5 0 8.6 0 13 0 13s0 4.4.5 6.5c.3 1.2 1.2 2.1 2.3 2.4 2 .6 10.2.6 10.2.6s8.1 0 10.2-.6c1.1-.3 2-1.2 2.3-2.4.5-2.1.5-6.5.5-6.5s0-4.4-.5-6.5zM10.1 17.6V8.4l7.5 4.6-7.5 4.6z"/></svg>
26						<span>Youtube</span>
27					</button>
28				</div>
29			</div>
30		</div>
31		<div class="l-jefnow__body">
32			<transition-group appear tag="div" name="jefnow" mode="out-in">
33        <section class="l-jefnow__item" v-for="(item, index) in jefnowGetData()" :key="item.index">
34          <template v-if="item.sns == 'news'">
35            <div class="l-jefnow__item__inner">
36              <h4 class="l-jefnow__news__ttl">NEWS</h4>
37              <a :href="item.link" class="l-jefnow__item__link">
38                <figure class="l-jefnow__news__photo"><img :src="item.thumbnail" width="320" height="168" :alt="item.title"></figure>
39                <div class="l-jefnow__news__summary">
40                  <div class="l-jefnow__news__label">
41                    <span class="l-jefnow__news__data">{{ item.ymd }}</span>
42                    <span class="l-jefnow__news__category">{{ item.category }}</span>
43                  </div>
44                  <p class="l-jefnow__news__txt">{{ item.title }}</p>
45                </div>
46              </a>
47            </div>
48          </template>
49          <template v-else-if="item.sns == 'twitter'">
50            <div class="l-jefnow__item__inner">
51              <a :href="'https://twitter.com/'+item.account_name+'/status/'+item.tweet_id" target="_blank" class="l-jefnow__item__link">
52                <h4 class="l-jefnow__twitter__name">{{ item.user_name }}<span>@{{ item.account_name }}</span></h4>
53                <div class="l-jefnow__twitter__summary">
54                  <p style="white-space:pre-wrap; word-wrap:break-word;">{{ item.body }}</p>
55                </div>
56                <figure v-if="item.thumbnail != ''" class="l-jefnow__twitter__media"><img :src="item.thumbnail" width="320" alt=""></figure>
57              </a>
58            </div>
59          </template>
60          <template v-else-if="item.sns == 'instagram'">
61            <div class="l-jefnow__item__inner">
62              <a :href="item.url" target="_blank" class="l-jefnow__item__link">
63                <h4 class="l-jefnow__instagram__name">{{ item.account_name }}<span>@{{ item.user_name }}</span></h4>
64                <figure v-if="item.thumbnail != ''" class="l-jefnow__twitter__media"><img :src="item.thumbnail" width="320" alt=""></figure>
65                <div class="l-jefnow__twitter__summary">
66                  <p style="white-space:pre-wrap; word-wrap:break-word;">{{ item.caption }}</p>
67                </div>
68              </a>
69            </div>
70          </template>
71          <template v-else-if="item.sns == 'youtube'">
72            <div class="l-jefnow__item__inner">
73              <a :href="item.url" target="_blank" class="l-jefnow__item__link">
74                <h4 class="l-jefnow__youtube__name">{{ item.channel_name }} <span>{{ item.user_name }}</span></h4>
75                <figure v-if="item.thumbnail != ''" class="l-jefnow__news__photo"><img :src="item.thumbnail" width="320" height="168" :alt="item.title"></figure>
76                <div class="l-jefnow__news__summary">
77                  <div class="l-jefnow__news__label">
78                    <span class="l-jefnow__news__data">{{ item.ymd }}</span>
79                  </div>
80                  <p class="l-jefnow__news__txt">{{ item.title }}</p>
81                </div>
82              </a>
83            </div>
84          </template>
85        </section>
86			</transition-group>
87		</div>
88		<div ref="item_observe" style="opacity: 0;visibility: hidden;height:10px;"></div>
89	</div>
90</article>
91<div class="overlay" :class="{'-active': overlayflag}" @click="$emit('jefnowclose')"></div>`,
92  data() {
93    return {
94      selectCategoryList: [],
95      jefnowData: [],
96      jefnowNewsData: [],
97      jefnowYoutubeData: [],
98      jefnowInstagramData: [],
99      jefnowTwitterData: [],
100      observer: null,
101      limit: 0,
102    };
103  },
104  created() {
105    var cookie = "";
106    if ((cookie = $cookies.get("jefnow"))) {
107      if (cookie.indexOf(",") != -1) {
108        this.selectCategoryList = cookie.split(",");
109      } else {
110        this.selectCategoryList.push(cookie);
111      }
112    } else {
113      this.selectCategoryList.push("news");
114    }
115  },
116  mounted() {
117    this.jefnowGetFunc();
118    this.observer = new IntersectionObserver((entries) => {
119      const entry = entries[0];
120      if (entry && entry.isIntersecting) {
121        this.jefnowLimitUpdate();
122      }
123    });
124    const item_observe = this.$refs.item_observe;
125    this.observer.observe(item_observe);
126  },
127  methods: {
128    categorySelect(category) {
129      if (this.selectCategoryList.includes(category)) {
130        this.selectCategoryList = this.selectCategoryList.filter((item) => item != category);
131      } else {
132        this.selectCategoryList.push(category);
133      }
134      $cookies.set("jefnow", this.selectCategoryList, "1h");
135      this.jefnowGetFunc();
136    },
137    jefnowLimitUpdate() {
138      this.limit = this.limit + 10;
139      this.jefnowGetFunc();
140    },
141    jefnowGetData() {
142      return this.jefnowData.slice(0, this.limit);
143    },
144    jefnowGetFunc() {
145      if (this.jefnowflag) {
146        var apiUrl = "";
147        var promises = [];
148        this.jefnowData = [];
149        if (this.selectCategoryList.length > 0) {
150          this.selectCategoryList.forEach(
151            function (item) {
152              promises.push(
153                new Promise((resolve) => {
154                  switch (item) {
155                    case "news":
156                      if (this.jefnowNewsData.length == 0) {
157                        apiUrl = "/api/jefnow/news";
158                        axios
159                          .get(apiUrl, {})
160                          .then((response) => {
161                            if (response.data) {
162                              this.jefnowNewsData = response.data["news"];
163                              this.jefnowData = this.jefnowData.concat(this.jefnowNewsData);
164                            }
165                          })
166                          .catch((error) => {
167                            // console.log(error);
168                          })
169                          .finally((element) => {
170                            resolve();
171                          });
172                      }
173                      if (this.jefnowNewsData.length > 0) {
174                        this.jefnowData = this.jefnowData.concat(this.jefnowNewsData);
175                        resolve();
176                      }
177                      break;
178                    case "youtube":
179                      if (this.jefnowYoutubeData.length == 0) {
180                        apiUrl = "/api/jefnow/youtube";
181                        axios
182                          .get(apiUrl, {})
183                          .then((response) => {
184                            if (response.data) {
185                              this.jefnowYoutubeData = response.data["youtube"];
186                              this.jefnowData = this.jefnowData.concat(this.jefnowYoutubeData);
187                            }
188                          })
189                          .catch((error) => {
190                            // console.log(error)
191                          })
192                          .finally((element) => {
193                            resolve();
194                          });
195                      }
196                      if (this.jefnowYoutubeData.length > 0) {
197                        this.jefnowData = this.jefnowData.concat(this.jefnowYoutubeData);
198                        resolve();
199                      }
200                      break;
201                    case "instagram":
202                      if (this.jefnowInstagramData.length == 0) {
203                        apiUrl = "/api/jefnow/instagram";
204                        axios
205                          .get(apiUrl, {})
206                          .then((response) => {
207                            if (response.data) {
208                              this.jefnowInstagramData = response.data["instagram"];
209                              this.jefnowData = this.jefnowData.concat(this.jefnowInstagramData);
210                            }
211                          })
212                          .catch((error) => {
213                            // console.log(error)
214                          })
215                          .finally((element) => {
216                            resolve();
217                          });
218                      }
219                      if (this.jefnowInstagramData.length > 0) {
220                        this.jefnowData = this.jefnowData.concat(this.jefnowInstagramData);
221                        resolve();
222                      }
223                      break;
224                    case "twitter":
225                      if (this.jefnowTwitterData.length == 0) {
226                        apiUrl = "/api/jefnow/twitter";
227                        axios
228                          .get(apiUrl, {})
229                          .then((response) => {
230                            if (response.data) {
231                              this.jefnowTwitterData = response.data["twitter"];
232                              this.jefnowData = this.jefnowData.concat(this.jefnowTwitterData);
233                            }
234                          })
235                          .catch((error) => {
236                            // console.log(error)
237                          })
238                          .finally((element) => {
239                            resolve();
240                          });
241                      }
242                      if (this.jefnowTwitterData.length > 0) {
243                        this.jefnowData = this.jefnowData.concat(this.jefnowTwitterData);
244                        resolve();
245                      }
246                      break;
247                    default:
248                      resolve();
249                      break;
250                  }
251                })
252              );
253            }.bind(this)
254          );
255          Promise.all(promises).then(() => {
256            if (this.jefnowData.length > 0) {
257              this.jefnowData.sort((a, b) => b.unixtime - a.unixtime);
258            }
259          });
260        }
261      }
262    },
263  },
264};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.