Skip to content

Commit 1c933d4

Browse files
⚙️ first build
1 parent 858138f commit 1c933d4

11 files changed

+433
-0
lines changed

dist/class/HTMLCodeBlockElement.js

Lines changed: 255 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,255 @@
1+
"use strict";
2+
3+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4+
5+
Object.defineProperty(exports, "__esModule", {
6+
value: true
7+
});
8+
exports["default"] = void 0;
9+
10+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11+
12+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
13+
14+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
15+
16+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
17+
18+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
19+
20+
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
21+
22+
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
23+
24+
function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }
25+
26+
function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }
27+
28+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
29+
30+
function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; }
31+
32+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
33+
34+
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
35+
36+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
37+
38+
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
39+
40+
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
41+
42+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
43+
44+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
45+
46+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
47+
48+
var _shadowRoot = /*#__PURE__*/new WeakMap();
49+
50+
var _codeBlock = /*#__PURE__*/new WeakMap();
51+
52+
var _codeWrap = /*#__PURE__*/new WeakMap();
53+
54+
var _value = /*#__PURE__*/new WeakMap();
55+
56+
var _language = /*#__PURE__*/new WeakMap();
57+
58+
var _render = /*#__PURE__*/new WeakSet();
59+
60+
var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
61+
_inherits(HTMLCodeBlockElement, _HTMLElement);
62+
63+
var _super = _createSuper(HTMLCodeBlockElement);
64+
65+
function HTMLCodeBlockElement() {
66+
var _classPrivateFieldGet2;
67+
68+
var _this;
69+
70+
_classCallCheck(this, HTMLCodeBlockElement);
71+
72+
_this = _super.call(this);
73+
/**
74+
* @param name - The value of name attribute for the slot element
75+
* @returns - The slot element
76+
*/
77+
78+
_render.add(_assertThisInitialized(_this));
79+
80+
_shadowRoot.set(_assertThisInitialized(_this), {
81+
writable: true,
82+
value: void 0
83+
});
84+
85+
_codeBlock.set(_assertThisInitialized(_this), {
86+
writable: true,
87+
value: void 0
88+
});
89+
90+
_codeWrap.set(_assertThisInitialized(_this), {
91+
writable: true,
92+
value: void 0
93+
});
94+
95+
_value.set(_assertThisInitialized(_this), {
96+
writable: true,
97+
value: ''
98+
});
99+
100+
_language.set(_assertThisInitialized(_this), {
101+
writable: true,
102+
value: ''
103+
});
104+
105+
var mkslot = function mkslot(name) {
106+
var slot = document.createElement('slot');
107+
slot.name = name;
108+
return slot;
109+
};
110+
111+
var slots = [mkslot('code')];
112+
var pre = document.createElement('pre');
113+
var code = document.createElement('code');
114+
code.tabIndex = 0;
115+
code.className = 'hljs'; // TODO: Make it variable
116+
117+
pre.slot = 'code';
118+
pre.append(code); // Hard private props initialize
119+
120+
_classPrivateFieldSet(_assertThisInitialized(_this), _value, (_this.textContent || '').replace(/^\n/, ''));
121+
122+
_classPrivateFieldSet(_assertThisInitialized(_this), _language, _this.getAttribute('language') || '');
123+
124+
_classPrivateFieldSet(_assertThisInitialized(_this), _shadowRoot, _this.attachShadow({
125+
mode: 'closed'
126+
}));
127+
128+
_classPrivateFieldSet(_assertThisInitialized(_this), _codeBlock, code);
129+
130+
_classPrivateFieldSet(_assertThisInitialized(_this), _codeWrap, pre);
131+
132+
(_classPrivateFieldGet2 = _classPrivateFieldGet(_assertThisInitialized(_this), _shadowRoot)).append.apply(_classPrivateFieldGet2, slots);
133+
134+
return _this;
135+
}
136+
137+
_createClass(HTMLCodeBlockElement, [{
138+
key: "value",
139+
get:
140+
/** @returns - Syntax Highlighted Source Code */
141+
function get() {
142+
return _classPrivateFieldGet(this, _value);
143+
},
144+
set: function set(src) {
145+
_classPrivateFieldSet(this, _value, src);
146+
147+
_classPrivateMethodGet(this, _render, _render2).call(this);
148+
}
149+
/**
150+
* Language Mode
151+
* @returns - The value of the language attribute
152+
*/
153+
154+
}, {
155+
key: "language",
156+
get: function get() {
157+
return _classPrivateFieldGet(this, _language);
158+
},
159+
set: function set(name) {
160+
_classPrivateFieldSet(this, _language, name || '');
161+
162+
if (_classPrivateFieldGet(this, _language)) {
163+
this.setAttribute('language', name);
164+
} else {
165+
this.removeAttribute('language');
166+
}
167+
168+
_classPrivateMethodGet(this, _render, _render2).call(this);
169+
}
170+
}, {
171+
key: "attributeChangedCallback",
172+
value: function attributeChangedCallback(attrName, oldValue, newValue) {
173+
if (oldValue === newValue) {
174+
return;
175+
} // When the value of the attribute being observed changes,
176+
// pass value to accessors.
177+
178+
179+
switch (attrName) {
180+
case 'language':
181+
this[attrName] = newValue || '';
182+
break;
183+
}
184+
}
185+
}, {
186+
key: "connectedCallback",
187+
value: function connectedCallback() {
188+
_classPrivateMethodGet(this, _render, _render2).call(this);
189+
}
190+
}], [{
191+
key: "highlight",
192+
value:
193+
/**
194+
* A library for performing syntax highlighting.
195+
* Before running `customElements.define()`,
196+
* you need to assign it directly to `HTMLCodeBlockElement.endgine`.
197+
* Currently, only highlight.js is assumed.
198+
*/
199+
200+
/**
201+
* Returns the result of highlighting the received source code string.
202+
* @param src - Source code string for highlight
203+
* @param options - Option for library of highlight
204+
* @returns - Object of the highlight result
205+
*/
206+
function highlight(src, options) {
207+
var endgine = HTMLCodeBlockElement.endgine;
208+
209+
if (!endgine) {
210+
throw new Error('The syntax highlighting engine is not set to `HTMLCodeBlockElement.endgine`.');
211+
}
212+
213+
if ( // Verifying the existence of a language
214+
options !== null && options !== void 0 && options.language && endgine.getLanguage(options.language)) {
215+
return endgine.highlight(src, options);
216+
}
217+
218+
return endgine.highlightAuto(src);
219+
}
220+
}, {
221+
key: "observedAttributes",
222+
get: function get() {
223+
return ['language' // 'controls',
224+
];
225+
}
226+
}]);
227+
228+
return HTMLCodeBlockElement;
229+
}( /*#__PURE__*/_wrapNativeSuper(HTMLElement)); // Protect constructor names from minify
230+
231+
232+
exports["default"] = HTMLCodeBlockElement;
233+
234+
function _render2() {
235+
if (!this.parentNode) {
236+
return;
237+
}
238+
/** The resulting syntax-highlighted markup */
239+
240+
241+
var markup = HTMLCodeBlockElement.highlight(_classPrivateFieldGet(this, _value), {
242+
language: _classPrivateFieldGet(this, _language)
243+
}).value; // initialize
244+
245+
this.textContent = '';
246+
_classPrivateFieldGet(this, _codeBlock).textContent = '';
247+
248+
_classPrivateFieldGet(this, _codeBlock).insertAdjacentHTML('afterbegin', markup);
249+
250+
this.append(_classPrivateFieldGet(this, _codeWrap));
251+
}
252+
253+
Object.defineProperty(HTMLCodeBlockElement, 'name', {
254+
value: 'HTMLCodeBlockElement'
255+
});

dist/index.all.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
exports.HTMLCodeBlockElement = void 0;
7+
8+
var _highlight = _interopRequireDefault(require("highlight.js"));
9+
10+
var _HTMLCodeBlockElement = _interopRequireDefault(require("./class/HTMLCodeBlockElement"));
11+
12+
require("./utils/add-style");
13+
14+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15+
16+
_HTMLCodeBlockElement["default"].endgine = _highlight["default"];
17+
customElements.define('code-block', _HTMLCodeBlockElement["default"]);
18+
var HTMLCodeBlockElement = _HTMLCodeBlockElement["default"];
19+
exports.HTMLCodeBlockElement = HTMLCodeBlockElement;

dist/index.common.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
exports.HTMLCodeBlockElement = void 0;
7+
8+
var _common = _interopRequireDefault(require("highlight.js/lib/common"));
9+
10+
var _HTMLCodeBlockElement = _interopRequireDefault(require("./class/HTMLCodeBlockElement"));
11+
12+
require("./utils/add-style");
13+
14+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15+
16+
_HTMLCodeBlockElement["default"].endgine = _common["default"];
17+
customElements.define('code-block', _HTMLCodeBlockElement["default"]);
18+
var HTMLCodeBlockElement = _HTMLCodeBlockElement["default"];
19+
exports.HTMLCodeBlockElement = HTMLCodeBlockElement;

dist/index.core.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
exports.HTMLCodeBlockElement = void 0;
7+
8+
var _core = _interopRequireDefault(require("highlight.js/lib/core"));
9+
10+
var _HTMLCodeBlockElement = _interopRequireDefault(require("./class/HTMLCodeBlockElement"));
11+
12+
require("./utils/add-style");
13+
14+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15+
16+
_HTMLCodeBlockElement["default"].endgine = _core["default"];
17+
customElements.define('code-block', _HTMLCodeBlockElement["default"]);
18+
var HTMLCodeBlockElement = _HTMLCodeBlockElement["default"];
19+
exports.HTMLCodeBlockElement = HTMLCodeBlockElement;

dist/utils/add-style.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
"use strict";
2+
3+
// Inserts the style element into the page for
4+
// the default style of the code-block element.
5+
var style = document.createElement('style');
6+
var link = document.querySelector('head link, head style');
7+
style.textContent = "\n code-block {\n margin: 1em 0;\n display: block;\n font-family: Consolas, Monaco, monospace;\n }\n code-block pre {\n margin: 0;\n }\n code-block code {\n padding: 1em;\n display: block;\n font-size: 100%;\n overflow-x: auto;\n }\n";
8+
9+
if (link) {
10+
link.before(style);
11+
} else {
12+
document.head.append(style);
13+
}

lib/html-code-block-element.all.min.js

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
highlight.js
2+
BSD-3-Clause
3+
BSD 3-Clause License
4+
5+
Copyright (c) 2006, Ivan Sagalaev.
6+
All rights reserved.
7+
8+
Redistribution and use in source and binary forms, with or without
9+
modification, are permitted provided that the following conditions are met:
10+
11+
* Redistributions of source code must retain the above copyright notice, this
12+
list of conditions and the following disclaimer.
13+
14+
* Redistributions in binary form must reproduce the above copyright notice,
15+
this list of conditions and the following disclaimer in the documentation
16+
and/or other materials provided with the distribution.
17+
18+
* Neither the name of the copyright holder nor the names of its
19+
contributors may be used to endorse or promote products derived from
20+
this software without specific prior written permission.
21+
22+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
26+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

lib/html-code-block-element.common.min.js

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
highlight.js
2+
BSD-3-Clause
3+
BSD 3-Clause License
4+
5+
Copyright (c) 2006, Ivan Sagalaev.
6+
All rights reserved.
7+
8+
Redistribution and use in source and binary forms, with or without
9+
modification, are permitted provided that the following conditions are met:
10+
11+
* Redistributions of source code must retain the above copyright notice, this
12+
list of conditions and the following disclaimer.
13+
14+
* Redistributions in binary form must reproduce the above copyright notice,
15+
this list of conditions and the following disclaimer in the documentation
16+
and/or other materials provided with the distribution.
17+
18+
* Neither the name of the copyright holder nor the names of its
19+
contributors may be used to endorse or promote products derived from
20+
this software without specific prior written permission.
21+
22+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
26+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

0 commit comments

Comments
 (0)