Single Page Apps for GitHub Pages
@@ -24,7 +24,12 @@
// https://username.github.io/repo-name/?p=/one/two&q=a=b~and~c=d#qwe
// Otherwise, leave segmentCount as 0.
var segmentCount = 0;
-
+ // account for top level sub-domain on github vs 1 level folder in.
+ // this has issues w/ org.github.io/dir/project but will resolve org.github.io from /project
+ // this will still choke on org/github.io/project/post/deeper/nesting so a build routine would help
+ if (window.location.host.indexOf('github.io') != -1 && window.location.pathname.split('/').length > 2) {
+ segmentCount = 1;
+ }
var l = window.location;
l.replace(
l.protocol + '//' + l.hostname + (l.port ? ':' + l.port : '') +
diff --git a/adlcp_rootv1p2.xsd b/adlcp_rootv1p2.xsd
new file mode 100755
index 0000000..f33b38d
--- /dev/null
+++ b/adlcp_rootv1p2.xsd
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/build-legacy.js b/assets/build-legacy.js
index 3f99ea9..10e2dae 100644
--- a/assets/build-legacy.js
+++ b/assets/build-legacy.js
@@ -1 +1 @@
-var defs,ancient=!1,cdn="./";window.WCGlobalCDNPath&&(cdn=window.WCGlobalCDNPath),window.__appCDN&&(cdn=window.__appCDN);try{"undefined"==typeof Symbol&&(ancient=!0),new Function("let a;")}catch(e){ancient=!0}(window.__appForceUpgrade||window.WCForceUpgrade)&&ancient?window.location="assets/upgrade-browser.html":(!function(){function e(e,n,t){var o=e;if(o.state=n,o.stateData=t,0>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var o=arguments[1],i=0;ithis.length)&&-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(t,e){if(null==this)throw new TypeError('"this" is null or not defined');var n=Object(this),o=n.length>>>0;if(0===o)return!1;var i,r,s=0|e,h=Math.max(s>=0?s:o-Math.abs(s),0);for(;h0}});else{var t=function(t){for(var e=window.document,n=i(e);n;)n=i(e=n.ownerDocument);return e}(),e=[],n=null,o=null;s.prototype.THROTTLE_TIMEOUT=100,s.prototype.POLL_INTERVAL=null,s.prototype.USE_MUTATION_OBSERVER=!0,s._setupCrossOriginUpdater=function(){return n||(n=function(t,n){o=t&&n?l(t,n):{top:0,bottom:0,left:0,right:0,width:0,height:0},e.forEach(function(t){t._checkForIntersections()})}),n},s._resetCrossOriginUpdater=function(){n=null,o=null},s.prototype.observe=function(t){if(!this._observationTargets.some(function(e){return e.element==t})){if(!t||1!=t.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:t,entry:null}),this._monitorIntersections(t.ownerDocument),this._checkForIntersections()}},s.prototype.unobserve=function(t){this._observationTargets=this._observationTargets.filter(function(e){return e.element!=t}),this._unmonitorIntersections(t.ownerDocument),0==this._observationTargets.length&&this._unregisterInstance()},s.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorAllIntersections(),this._unregisterInstance()},s.prototype.takeRecords=function(){var t=this._queuedEntries.slice();return this._queuedEntries=[],t},s.prototype._initThresholds=function(t){var e=t||[0];return Array.isArray(e)||(e=[e]),e.sort().filter(function(t,e,n){if("number"!=typeof t||isNaN(t)||t<0||t>1)throw new Error("threshold must be a number between 0 and 1 inclusively");return t!==n[e-1]})},s.prototype._parseRootMargin=function(t){var e=(t||"0px").split(/\s+/).map(function(t){var e=/^(-?\d*\.?\d+)(px|%)$/.exec(t);if(!e)throw new Error("rootMargin must be specified in pixels or percent");return{value:parseFloat(e[1]),unit:e[2]}});return e[1]=e[1]||e[0],e[2]=e[2]||e[0],e[3]=e[3]||e[1],e},s.prototype._monitorIntersections=function(e){var n=e.defaultView;if(n&&-1==this._monitoringDocuments.indexOf(e)){var o=this._checkForIntersections,r=null,s=null;this.POLL_INTERVAL?r=n.setInterval(o,this.POLL_INTERVAL):(h(n,"resize",o,!0),h(e,"scroll",o,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in n&&(s=new n.MutationObserver(o)).observe(e,{attributes:!0,childList:!0,characterData:!0,subtree:!0})),this._monitoringDocuments.push(e),this._monitoringUnsubscribes.push(function(){var t=e.defaultView;t&&(r&&t.clearInterval(r),u(t,"resize",o,!0)),u(e,"scroll",o,!0),s&&s.disconnect()});var c=this.root&&(this.root.ownerDocument||this.root)||t;if(e!=c){var a=i(e);a&&this._monitorIntersections(a.ownerDocument)}}},s.prototype._unmonitorIntersections=function(e){var n=this._monitoringDocuments.indexOf(e);if(-1!=n){var o=this.root&&(this.root.ownerDocument||this.root)||t;if(!this._observationTargets.some(function(t){var n=t.element.ownerDocument;if(n==e)return!0;for(;n&&n!=o;){var r=i(n);if((n=r&&r.ownerDocument)==e)return!0}return!1})){var r=this._monitoringUnsubscribes[n];if(this._monitoringDocuments.splice(n,1),this._monitoringUnsubscribes.splice(n,1),r(),e!=o){var s=i(e);s&&this._unmonitorIntersections(s.ownerDocument)}}}},s.prototype._unmonitorAllIntersections=function(){var t=this._monitoringUnsubscribes.slice(0);this._monitoringDocuments.length=0,this._monitoringUnsubscribes.length=0;for(var e=0;e=0&&m>=0&&{top:u,bottom:a,left:f,right:d,width:g,height:m}||null),!v)break;b=b&&p(b)}return v}},s.prototype._getRootRect=function(){var e;if(this.root&&!d(this.root))e=c(this.root);else{var n=d(this.root)?this.root:t,o=n.documentElement,i=n.body;e={top:0,left:0,right:o.clientWidth||i.clientWidth,width:o.clientWidth||i.clientWidth,bottom:o.clientHeight||i.clientHeight,height:o.clientHeight||i.clientHeight}}return this._expandRectByRootMargin(e)},s.prototype._expandRectByRootMargin=function(t){var e=this._rootMarginValues.map(function(e,n){return"px"==e.unit?e.value:e.value*(n%2?t.width:t.height)/100}),n={top:t.top-e[0],right:t.right+e[1],bottom:t.bottom+e[2],left:t.left-e[3]};return n.width=n.right-n.left,n.height=n.bottom-n.top,n},s.prototype._hasCrossedThreshold=function(t,e){var n=t&&t.isIntersecting?t.intersectionRatio||0:-1,o=e.isIntersecting?e.intersectionRatio||0:-1;if(n!==o)for(var i=0;i0?0:1,i=r.findLength("StartToStart",a,this.range),n=r.findNodeByPos(e,i,t),this.startContainer=n.el,this.startOffset=n.offset,o=r.findLength("StartToEnd",a,this.range),n=r.findNodeByPos(e,o,1),this.endContainer=n.el,this.endOffset=n.offset,this.selectionStart=r.findLength("StartToStart",a,this.range,!0),this.selectionEnd=r.findLength("StartToEnd",a,this.range,!0)},t.prototype.select=function(){return this.range.select()},t.prototype.setStart=function(t,e){var n,o;return r.getText(t).length>=e&&e>=0?(o=this.range.duplicate(),3===t.nodeType&&(n=r.findPosFromNode(t),o.moveToElementText(t.parentNode),o.moveStart("character",n+e)),-1===this.range.compareEndPoints("StartToEnd",o)&&this.range.setEndPoint("EndToStart",o),this.range.setEndPoint("StartToStart",o)):void 0},t.prototype.setEnd=function(t,e){var n,o;return r.getText(t).length>=e&&e>=0?(o=this.range.duplicate(),3===t.nodeType&&(n=r.findPosFromNode(t),o.moveToElementText(t.parentNode),o.moveStart("character",n+e)),this.range.setEndPoint("EndToStart",o)):void 0},t.prototype.selectNodeContents=function(t){return this.range.moveToElementText(t)},t.prototype.collapse=function(t){return t?this.range.setEndPoint("EndToStart",this.range):this.range.setEndPoint("StartToEnd",this.range)},t.prototype.compareBoundaryPoints=function(t,e){return this.range.compareEndPoints(t,e.range)},t.prototype.cloneRange=function(){var e;return(e=new t).range=this.range.duplicate(),e.init(),e},t.prototype.detach=function(){return delete this.range},t.prototype.getBoundingClientRect=function(){var e;return{width:(e=this.range.getBoundingClientRect()).right-e.left,height:e.bottom-e.top,left:e.left,right:e.right,bottom:e.bottom,top:e.top}},t.prototype.toString=function(){return this.range.text||""},t}(),o=function(){function t(){this.selection=e.selection,this.ranges=[],this.init()}return t.prototype.init=function(){var t,e,n,o,r;return this.rangeCount=this.ranges.length,this.rangeCount?(e=this.ranges[0],null==this.prev&&(this.prev=e),0===e.compareBoundaryPoints(Range.END_TO_END,this.prev)?(t=(o=["end","start"])[0],n=o[1]):(t=(r=["start","end"])[0],n=r[1]),this.anchorNode=e[t+"Container"],this.anchorOffset=e[t+"Offset"],this.focusNode=e[n+"Container"],this.focusOffset=e[n+"Offset"],this.isCollapsed=this.anchorNode===this.focusNode):void 0},t.prototype.getRangeAt=function(t){return this.ranges[t]},t.prototype.setRangeAt=function(t,e){return this.prev=this.ranges[t],this.ranges[t]=e,this.init()},t.prototype.removeAllRanges=function(){return this.ranges=[],this.init()},t.prototype.addRange=function(t){var e,n,o,r,i;for(this.ranges.push(t),this.init(),i=[],n=0,o=(r=this.ranges).length;o>n;n++)e=r[n],i.push(e.select());return i},t.prototype.deleteFromDocument=function(){return this.selection.clear()},t.prototype.toString=function(){return this.ranges[0].toString()},t}(),r={convertLineBreaks:function(t){return t.replace(/\r\n/g,"\n")},stripLineBreaks:function(t){return t.replace(/\r\n/g,"")},getText:function(t){return t.innerText||t.nodeValue},findLength:function(t,e,n,o){var i;switch(i=e.duplicate(),t){case"StartToStart":i.setEndPoint("EndToStart",n);break;case"StartToEnd":i.setEndPoint("EndToEnd",n)}return o?r.convertLineBreaks(i.text).length:r.stripLineBreaks(i.text).length},findNodeByPos:function(t,e,n){var o,r;return null==n&&(n=0),(o=function(t,e,n,r){var i,a,s,h,c;for(c=[],a=0,s=(h=t.childNodes).length;s>a;a++)if(i=h[a],!r.found)if(3===i.nodeType){if(r.length+i.length+n>e){r.found=!0,r.el=i,r.offset=e-r.length;break}c.push(r.length+=i.length)}else c.push(o(i,e,n,r));return c})(t,e,n,r={length:0,el:t,offset:0}),r},findPosFromNode:function(t){var e,n,o;return n={pos:0},o=t.parentNode,(e=function(t,n,o){var r,i,a,s,h;for(h=[],i=0,a=(s=t.childNodes).length;a>i;i++)if(r=s[i],!o.found){if(r===n){o.found=!0;break}3===r.nodeType?h.push(o.pos+=r.length):r.hasChildNodes()?h.push(e(r,n,o)):h.push(void 0)}return h})(o,t,n),n.pos}}),"NodeList"in window&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=function(callback,thisArg){thisArg=thisArg||window;for(var i=0;i>>0;if("function"!=typeof predicate)throw new TypeError("predicate must be a function");for(var thisArg=arguments[1],k=0;kthis.length)&&-1!==this.indexOf(search,start)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(null==this)throw new TypeError('"this" is null or not defined');var o=Object(this),len=o.length>>>0;if(0===len)return!1;var x,y,n=0|fromIndex,k=Math.max(n>=0?n:len-Math.abs(n),0);for(;k0}});else{var document=function(startDoc){for(var doc=window.document,frame=getFrameElement(doc);frame;)frame=getFrameElement(doc=frame.ownerDocument);return doc}(),registry=[],crossOriginUpdater=null,crossOriginRect=null;IntersectionObserver.prototype.THROTTLE_TIMEOUT=100,IntersectionObserver.prototype.POLL_INTERVAL=null,IntersectionObserver.prototype.USE_MUTATION_OBSERVER=!0,IntersectionObserver._setupCrossOriginUpdater=function(){return crossOriginUpdater||(crossOriginUpdater=function(boundingClientRect,intersectionRect){crossOriginRect=boundingClientRect&&intersectionRect?convertFromParentRect(boundingClientRect,intersectionRect):{top:0,bottom:0,left:0,right:0,width:0,height:0},registry.forEach((function(observer){observer._checkForIntersections()}))}),crossOriginUpdater},IntersectionObserver._resetCrossOriginUpdater=function(){crossOriginUpdater=null,crossOriginRect=null},IntersectionObserver.prototype.observe=function(target){if(!this._observationTargets.some((function(item){return item.element==target}))){if(!target||1!=target.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:target,entry:null}),this._monitorIntersections(target.ownerDocument),this._checkForIntersections()}},IntersectionObserver.prototype.unobserve=function(target){this._observationTargets=this._observationTargets.filter((function(item){return item.element!=target})),this._unmonitorIntersections(target.ownerDocument),0==this._observationTargets.length&&this._unregisterInstance()},IntersectionObserver.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorAllIntersections(),this._unregisterInstance()},IntersectionObserver.prototype.takeRecords=function(){var records=this._queuedEntries.slice();return this._queuedEntries=[],records},IntersectionObserver.prototype._initThresholds=function(opt_threshold){var threshold=opt_threshold||[0];return Array.isArray(threshold)||(threshold=[threshold]),threshold.sort().filter((function(t,i,a){if("number"!=typeof t||isNaN(t)||t<0||t>1)throw new Error("threshold must be a number between 0 and 1 inclusively");return t!==a[i-1]}))},IntersectionObserver.prototype._parseRootMargin=function(opt_rootMargin){var margins=(opt_rootMargin||"0px").split(/\s+/).map((function(margin){var parts=/^(-?\d*\.?\d+)(px|%)$/.exec(margin);if(!parts)throw new Error("rootMargin must be specified in pixels or percent");return{value:parseFloat(parts[1]),unit:parts[2]}}));return margins[1]=margins[1]||margins[0],margins[2]=margins[2]||margins[0],margins[3]=margins[3]||margins[1],margins},IntersectionObserver.prototype._monitorIntersections=function(doc){var win=doc.defaultView;if(win&&-1==this._monitoringDocuments.indexOf(doc)){var callback=this._checkForIntersections,monitoringInterval=null,domObserver=null;this.POLL_INTERVAL?monitoringInterval=win.setInterval(callback,this.POLL_INTERVAL):(addEvent(win,"resize",callback,!0),addEvent(doc,"scroll",callback,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in win&&(domObserver=new win.MutationObserver(callback)).observe(doc,{attributes:!0,childList:!0,characterData:!0,subtree:!0})),this._monitoringDocuments.push(doc),this._monitoringUnsubscribes.push((function(){var win=doc.defaultView;win&&(monitoringInterval&&win.clearInterval(monitoringInterval),removeEvent(win,"resize",callback,!0)),removeEvent(doc,"scroll",callback,!0),domObserver&&domObserver.disconnect()}));var rootDoc=this.root&&(this.root.ownerDocument||this.root)||document;if(doc!=rootDoc){var frame=getFrameElement(doc);frame&&this._monitorIntersections(frame.ownerDocument)}}},IntersectionObserver.prototype._unmonitorIntersections=function(doc){var index=this._monitoringDocuments.indexOf(doc);if(-1!=index){var rootDoc=this.root&&(this.root.ownerDocument||this.root)||document;if(!this._observationTargets.some((function(item){var itemDoc=item.element.ownerDocument;if(itemDoc==doc)return!0;for(;itemDoc&&itemDoc!=rootDoc;){var frame=getFrameElement(itemDoc);if((itemDoc=frame&&frame.ownerDocument)==doc)return!0}return!1}))){var unsubscribe=this._monitoringUnsubscribes[index];if(this._monitoringDocuments.splice(index,1),this._monitoringUnsubscribes.splice(index,1),unsubscribe(),doc!=rootDoc){var frame=getFrameElement(doc);frame&&this._unmonitorIntersections(frame.ownerDocument)}}}},IntersectionObserver.prototype._unmonitorAllIntersections=function(){var unsubscribes=this._monitoringUnsubscribes.slice(0);this._monitoringDocuments.length=0,this._monitoringUnsubscribes.length=0;for(var i=0;i=0&&height>=0&&{top,bottom,left,right,width,height}||null),!intersectionRect)break;parent=parent&&getParentNode(parent)}return intersectionRect}},IntersectionObserver.prototype._getRootRect=function(){var rootRect;if(this.root&&!isDoc(this.root))rootRect=getBoundingClientRect(this.root);else{var doc=isDoc(this.root)?this.root:document,html=doc.documentElement,body=doc.body;rootRect={top:0,left:0,right:html.clientWidth||body.clientWidth,width:html.clientWidth||body.clientWidth,bottom:html.clientHeight||body.clientHeight,height:html.clientHeight||body.clientHeight}}return this._expandRectByRootMargin(rootRect)},IntersectionObserver.prototype._expandRectByRootMargin=function(rect){var margins=this._rootMarginValues.map((function(margin,i){return"px"==margin.unit?margin.value:margin.value*(i%2?rect.width:rect.height)/100})),newRect={top:rect.top-margins[0],right:rect.right+margins[1],bottom:rect.bottom+margins[2],left:rect.left-margins[3]};return newRect.width=newRect.right-newRect.left,newRect.height=newRect.bottom-newRect.top,newRect},IntersectionObserver.prototype._hasCrossedThreshold=function(oldEntry,newEntry){var oldRatio=oldEntry&&oldEntry.isIntersecting?oldEntry.intersectionRatio||0:-1,newRatio=newEntry.isIntersecting?newEntry.intersectionRatio||0:-1;if(oldRatio!==newRatio)for(var i=0;ihax-the-web
Project home and documentation for all things HAX
- 2021-04-07T14:24:50+00:00
+ 1970-01-20T23:35:16.452Zelmslnhttps://haxtheweb.org//feed
-
- Internationalization - i18n
- https://haxtheweb.org//item-cdd303d0-4490-4433-94fa-0e78cf849e80
- 2021-04-07T14:37:30+00:00
- 2021-04-07T14:24:50+00:00
- We've created a way to internationalize ANY web component you create. Because this is a complex topic, and we seek to empower anyone, anywhere to work with web components; i18n is a critical piece of
-
-
-
- We've created a way to internationalize ANY web component you create. Because this is a complex topic, and we seek to empower anyone, anywhere to work with web components; i18n is a critical piece of accessibility and improving knowledge access on the web. Doing so without requiring a framework driven approach, or even knowing how our element will be used in production, is a complicated series of decisions.
-This blog series details these decisions
-
I18NMixin
-
-
- Install the mixin via yarn or npm: yarn add @lrnwebcomponents/i18n-manager
-
-
- create a folder in your element called /locales
-
-
create a file called my-element.es.json for the spanish translation of your element. Japanese would be my-element.ja.json for example.
This invokes a dependency on our manager which you might not want to have in your element. If you want to do a similar approach but without dependencies, you just have to feed a custom event to our manager. You'll still have to use the convention for translatable text, but here's how you can invoke the event needed
Using the vanilla approach, you'll still need to have a /locales directory and the same naming convention. Our mixin just simplifies the integration a bit as well as the timing of what it's initiated but this event registration method will still work within any element that's going to arrive in HAX/HAXcms or any property you make that isn't using HAX at all.
- ]]>
-
-
-
- haxHooks
- https://haxtheweb.org//item-44cc230b-07db-442a-90cf-687e2d089a5d
- 2021-04-07T14:24:50+00:00
- 2021-04-07T13:32:25+00:00
- Elements can integrate deeply into HAX state management using what we call "hax hooks". By supplying a method on your web component like haxHooks() you are magically able to tap into different li
-
-
-
- Elements can integrate deeply into HAX state management using what we call "hax hooks". By supplying a method on your web component like
- haxHooks()
- you are magically able to tap into different life-cycle steps within the HAX editor.
-
-
Because of the simplicity and power of
- haxHooks
- this may not be an exhaustive list and
-
- the internal code documentation on this should be consulted
- (or open an issue to ensure we document a missing hook!). You can search the lrnwebcomponents monorepo for usage of haxHooks
- in order to discover additional implementations beyond what is pointed to below.
- This is a basic example in which each of the strings you'd then implement as their own async
- callbacks. async
- / await
- allows HAX to safely defer to your element to do whatever it wants to the DOM / internal structure of that callback, without disrupting element activation or conversion of DOM structure to HAX Element Schema, what it uses to virtualize the body for sanitation
- purposes at the time of save / adding new things to the page.
-
The most powerful hook in haxHooks. This fires whenever an element is read in via the appStore and it's definition loaded for use. This hook supplies an instance of the HAXStore which is the internal state management of HAX (written in MobX). You can use this object to do whatever you want to HAX. While seemingly too powerful, here are some examples of past things to leverage this super power for good
-
-
- code-sample
- - the code-sample tag uses this hook in order to inject additional shortcut logic. If the tag is supplied, things like
- ```js
- will convert to a JS based code-sample. It also hijacks the baked in support for
- ```
- in order to inject a code-sample tag instead of the default
- code
- tag
-
-
supplying "apps" based on tag -
- wikipedia-query
- and
- github-preview
- supply custom public API search endpoints based on their tag being loaded. This way you can use the "Media" menu in order to search Github or Wikipedia in HAX just by including these tags in your autoloader block of the appstore.
-
-
supplying translatable haxProperties -
- meme-maker
- and
- twitter-embed
- supply custom translations for their haxProperties. This means that if you were to edit these elements using the editor in Spanish (es), you would see the fields and example inputs in Spanish (es) as opposed to their English (en) default text supplied by the
- static get haxProperties()
- method.
-
-
-
- activeElementChanged(element, value)
-
-
This runs whenever a user activates / selects an element to modify in HAX. This supplies an instance of the element / DOM node that is active as well as if we are active (true) or inactive (false). This hook can be used to modify state / functional aspects of your elements just prior to it receiving activation by hax. An example use-case for this could be preventing default behavior for an element that is a clickable link (see:
- ebook-button
-). Another possible usage is making pieces of the internal
- shadowRoot
-
- contenteditable
-, only while activated (see:
- meme-maker
-).
-
-
- editModeChanged(value)
-
-
This runs on all active nodes in the
- hax-body
- tag when the editing state of the HAX editor itself changes. If we are now editing, value is
- true
-, when we go to save / are no longer editing, it is
- false
-.
-
- inlineContextMenu(ceMenu)
-
This hook runs after element activation in order to allow elements to supply custom editing buttons and operations to the in-context menu that hovers above active elements. You have access to the instance of the custom elements hax menu element (hax-ce-context) and can add whatever buttons you want at this time with custom callbacks. See multiple-choice
- for an example of how you can leverage this. multiple-choice
- uses this to add quick buttons for adding and removing potential answers quickly.
-
- preProcessNodeToContent(node)
-
This runs right before nodes are converted to content in the entire hax-body. This happens when the user has triggered a save event and we are converting the DOM from real nodes into the HTML text that is to be saved / returned to a backend. This hook allows you to do any known data clean up to the element prior to it being converted to HTML. See multiple-choice
- for an example of taking a complex data property and converting it to innerHTML children at the time of save for progressive enhancement purposes.
-
progressiveEnhancement(element)
-
This hook runs WHILE the node is being converted to text and should return a string that will be appended into the innerHTML area of the element. This is an alternative to what you could accomplish during preProcessNodeToContent but want to work with a string based response. See meme-maker
- for an example of using this to inject innerHTML which only is for SEO purposes.
-
- postProcessNodeToContent(content)
-
This hook runs after preProcessNodeToContent and progressiveEnhancement and before the element is returned in the hax-save event. This runs AFTER the node has been converted to content. This is useful for forcible content clean up like regex'ing output for specific words to not leak into output. See video-player
- for ensuring there are no internal empty arrays for data is not a required field.
-
- preProcessInsertContent(detail)
-
This is a hax schema element, our virtual dom node, that is about to be inserted into the hax-body. This allows for custom modification to the data that's about to be converted to a DOM node. See multiple-choice
- for an example of ensuring that answer data doesn't bleed through to the page. This hook runs on duplication as well as inserting a node by the user selecting the block.
- ]]>
-
-
-
- HAX11ty
- https://haxtheweb.org//item-587de126-437b-4864-a3ea-54078837127c
- 2021-04-07T14:24:50+00:00
- 2020-08-17T19:01:17+00:00
- HAX + 11ty = HAX11ty! HAX11ty gives you the best of SEO from 11ty while using the HAX editor and the HAXcms theme engine for presenting material. This gives you the SPA capabilities of fast loading r
-
-
-
- HAX + 11ty = HAX11ty
-! HAX11ty gives you the best of SEO from 11ty while using the HAX editor and the HAXcms theme engine for presenting material. This gives you the SPA capabilities of fast loading routes in HAXcms but reload the page and it loads a physical file for high SEO ala 11ty!
-
It even has github actions support built in! Meaning you can check out the mini-doc site for HAX11ty
- which is self-updated when we update the docs / repo for HAX11ty.
-
-
- ]]>
-
-
-
- Block settings
- https://haxtheweb.org//item-eca7c8a4-393a-4e68-8cb4-440e94683738
- 2021-04-07T14:24:50+00:00
- 2020-08-17T18:41:49+00:00
- Block settings will change contextually based on which block has been selected in the editable area of the page. In this screenshot, a paragraph has been selected and so the icon associated with it is
-
-
-
- Block settings will change contextually based on which block has been selected in the editable area of the page. In this screenshot, a paragraph has been selected and so the icon associated with it is shown as well as the name of the element. If we selected a meme or other tag we'd see contextual settings based on what that HTML element tells HAX should be the editing interface.
-
Normal HTML Paragraph Tag
-
Meme Tag
-
Notice with the meme element that it now has additional fields which when changed are reflected in the page instantly!
- ]]>
-
-
-
- Templates and Layouts
- https://haxtheweb.org//item-aa589faa-e860-4221-82fa-df6d57328ac2
- 2021-04-07T14:24:50+00:00
- 2020-08-17T18:41:49+00:00
- Templates and layouts allow you to drop in pre-built pieces of content structure. This might be a series of images or an example of content that could be written.
-
-
-
- Templates and layouts allow you to drop in pre-built pieces of content structure. This might be a series of images or an example of content that could be written.
- ]]>
-
-
-
- Roadmap
- https://haxtheweb.org//welcome/roadmap-1
- 2021-04-07T14:24:50+00:00
- 2019-08-08T18:53:07+00:00
- HAX encompasses many different projectsThis roadmap illustrates all the projects related to HAX and ELMS:LN, which HAX comes from. The little settings gears found throughout illustrate enhancements a
-
-
-
- HAX encompasses many different projects
-
This roadmap illustrates all the projects related to HAX and ELMS:LN, which HAX comes from. The little settings gears found throughout illustrate enhancements and next steps for the different projects in our wheel house.
-
As you can see, there's a lot of planned enhancements to HAXeditor and HAXcms with a lot of additional future capabilities in ELMS:LN as a result of these projects. It's important to understand these relationships through and how innovations flow between them.
-
Relationships of major pieces
-
HAX has many different parts detailed here, so let's look at the relationship between these pieces before getting into the roadmap. HAX projects are part of the ELMS:LN organization and so ELMS:LN is also included in these roadmap details.
-
HAXiam, HAXcms, HAXeditor are three projects that make up the "HAX" name space, all of which benefit from being built on web components. HAXiam is a server technology while HAXcms is a mix of server and front end assets. HAXeditor is fully front-end code which then requires a backend to save and load pages from.
-
Below is an image consolidating information found on this site with arrows illustrating flow of innovation. Web components are always our building blocks, usually bubbling up as a need in either ELMS:LN, HAXcms or HAXeditor. From there, HAXeditor influences and improves ELMS:LN and HAXcms. ELMS:LN has a copy of HAXcms inside of it so sees improvements from both platforms. HAXiam just makes sure that copies of HAXcms are generated.
-
Now with this foundation you can dig into the different pieces of the project roadmaps.
- ]]>
-
-
-
- ClassicPress
- https://haxtheweb.org//integrations-1/classicpress-1
- 2021-04-07T14:24:50+00:00
- 2019-08-08T15:43:29+00:00
- ClassicPress is a popular fork of WordPress that's even easier to get HAX up and running then it is in the original!Get the HAX plugin from the wordpress registryGo to edit / create a page/post
-
-
-
- ClassicPress
- is a popular fork of WordPress that's even easier to get HAX up and running then it is in the original!
-
-
Go to edit / create a page/post and you are HAXing
-
-
Installation video
-
This shows installing it manually if you can't get it from the wordpress store!
-
- ]]>
-
-
-
- HAXcms
- https://haxtheweb.org//welcome/why-haxcms-1
- 2021-04-07T14:24:50+00:00
- 2019-07-24T12:45:22+00:00
- HAXcms powers this website and is a hybrid static site generator, a new class of CMS. It's hybrid in that everything is written to static like a static site generator and it's 100% decoupled via web
-
-
-
-
-
HAXcms powers this website and is a hybrid static site generator, a new class of CMS. It's hybrid in that everything is written to static like a static site generator and it's 100% decoupled via web components.
-
-
-
-
Features
-
Micro-site manager, so manage multiple sites from a single HAXcms install
-
Each site is powered by static files which live in version control
-
Every change is executed by the front end via HAX / Outline tools
-
Every change is automatically tracked in version control (zip the folder and send it to a friend and it'll work)
-
The "database" is powered by a site.json file that lives with the site
-
All operations write to static files so every change is as if you editing HTML by hand (but you didn't... HAX did)
-
Ability to serve up as a static site on CDNs (this site is on GH pages + a CDN) via Publishing which makes a purely static copy with a service worker and the whole jazz for offline / installable capability (0 config)
-
Build your own themes via custom front end dev if you like or use one of our baked in ones
-
-
It is a flat file generator with a UI and the UI contextually loads based on if you should see it. It's weird, we know, and that's also why we have trouble describing what it is. It's a flat file CMS without tooling required. It's a sustainable way of building and maintaining a "CMS" as it has multiple pages, can handle custom fields, custom themes, but yet it doesn't require infrastructure to keep running beyond PHP / node / Beaker browser to act as a back end to edit the static files.
-
It's an organic CMS. A living yet permanent website. It's hacking the limitations of content authoring capabilities. It's why we say, we're HAX The Web.
-
Core Principles
-
Support all platforms and devices (CMS, App, etc)
-
Empower authors to write code without ever looking at code
-
All content produced must work with or without HAXeditor available
-
Support older markup, regardless of structure, as best we can
-
HAX will learn the rules of producing elements, it won't dictate them
-
Decentralize all the things, empower all the peoples
-
-
Cross platform
-
Because we've adopted the web component
-
- standard in the development of both HAX (authoring system) and HAXCMS (content management), everything we create and compile via our open tooling
- can support about 98.4% of all browser traffic globally without server side rendering. HAXcms also employs a progressive enhancement methodology meaning that it can hit 100% of all browsing traffic with content.
-
This means that you can use the latest and greatest of the web and not have to constantly worry about a library changing! The dawn of the age of web components is now, join the revolution!
-
Platform support
-
Evergreen
- browsers
- (93+% of traffic) - no polyfills!
See F.A.Q.
- for a more detailed break out of stats
-
-
No content lock-in
-
The elements that make up HAX can be delivered via a CDN or installed locally. This means that the functionality is tied to the browser
-
- and NOT
-
- to the platform itself (huh?). Well, think of all the complex functionality of any site you've ever built or used. Then add content to that site. Now move that site (in your mind) to another server. What has to be migrated to maintain the content functioning that isn't actually content?
-
For example, take this quiz:
-
- ]]>
-
-
-
- Scavenger Hunt
- https://haxtheweb.org//scavenger-hunt-1
- 2021-04-07T14:24:50+00:00
- 2019-07-24T12:15:37+00:00
- Become part of our dynasty franchise **by wearing a cool jerseyWe're building the greatest roster of people ever to HAX the complacency of our industry. Take the HAX scavenger hunt at the next ev
-
-
-
- Become part of our dynasty franchise * *by wearing a cool jersey
-
-
-
-
-
We're building the greatest roster of people ever to HAX the complacency of our industry. Take the HAX scavenger hunt at the next event to join the movement!
-
Past winners rocking their merch from completing the hunt!
-
-
- ]]>
-
-
-
- Life cycle
- https://haxtheweb.org//documentation-1/haxcms/life-cycle
- 2021-04-07T14:24:50+00:00
- 2019-04-05T20:27:27+00:00
- This is a general life cycle that happens when HAXcms "boots up". When web components are unpacking the contents of what to do it generally will work this way.page load, should it be no-js or a web c
-
-
-
- This is a general life cycle that happens when HAXcms "boots up". When web components are unpacking the contents of what to do it generally will work this way.
-
page load, should it be no-js or a web component delivered, preflight
-
haxcms-site-builder loads site.json, reads JSON Outline Schema and starts to bootstrap that into a theme, items, title, etc
-
Appends a haxcms-editor-builder tag which checks for "context"
-
Context is established based on global values for php, nodejs, beaker, etc
-
Uses a login end point to check if there's a JWT in the user's local data
HAXeditor gets injected into the correct place in the theme which then all of that unpacks and does its thing
-
-
Event driven architecture
-
HAXcms allows for jumping in at different core operational steps and reacting to these changes based on an event driven design pattern. This means that an event "fires" in PHP, much like it does in JavaScript and code written to react to it can make changes at that point in the operation.
-
Here is an example from HAXiam which implements custom configuration event listeners
-// file included which has the class in question
-include_once str_replace('_iamConfig/HAXcmsConfig.php', '', __FILE__) . '/system/lib/IAM.php';
-// in the configuration file HAXcmsConfig.php
-// this adds an event listener for the haxcms-jwt-get event
-// and then says to pass the data in question to class $IAM->getJwtUser();
-$HAXCMS->addEventListener('haxcms-jwt-get', array($IAM, 'getJwtUser'));
-// later on in additionally included code
-class IAM {
-/**
- * Callback for event: haxcms-jwt-get
- */
- public function getJwtUser(&$token) {
- if ($this->enterprise->userVar) {
- $token['user'] = $this->enterprise->userVar;
- }
- }
-}
-// this ensures that there is a global $IAM object
-// it also ensures there's an instance so that when our above
-// listener fires it'll correctly associate to this code
-global $IAM;
-$IAM = new IAM();
-
Core listeners
-
Core listeners to influence how the data is constructed. You can add these to your _config/config.php file
-
haxcms-init
- - just after HAXcms bootstraps its initial configuration
-
haxcms-site-metadata
- - when constructing metadata block at the top of the document
-
haxcms-connection-settings
- - for authorized users, this is the block of end points for connecting to and modifying HAXcms logic as far as where data flows.
-
-
Enterprise integrations and SSO
-
The following hooks allow for supplanting the HAXcms (intentionally) simplistic login system. This allows you to do custom integrations for your organization. HAXiam implements many of these
- if you need specific examples.
-
haxcms-login-test
- - when a login didn't pass our simplistic built in checks. Useful for enterprise integrations and other SSO methods of access
-
haxcms-validate-user
- - same as login-test except this fires to validate every transaction to ensure the user name matches when decoding the JWT
-
haxcms-jwt-get
- - when we ask for the JWT. This allows SSO to supply the token manually via a different methodology than our core one
-
haxcms-refresh-token-get
- - when our connection is deemed needing to refresh, this supplies the refresh token for when and what that looks like
-
- ]]>
-
-
-
- I have issues
- https://haxtheweb.org//welcome/i-have-issues
- 2021-04-07T14:24:50+00:00
- 2019-03-25T23:24:55+00:00
- You have a problem or would like to contribute to anything in our universe? That's awesome! All issues, feature requests and general thumbs up should happen in our issue queue on github: https://gith
-
-
-
- You have a problem or would like to contribute to anything in our universe? That's awesome! All issues, feature requests and general thumbs up should happen in our issue queue on github: https://github.com/elmsln/issues/issues
-
-
- ]]>
-
-
-
- Troubleshooting
- https://haxtheweb.org//documentation-1/haxcms/troubleshooting
- 2021-04-07T14:24:50+00:00
- 2019-03-25T23:16:04+00:00
- These are some common issues / resolutions in HAXcms related to installation, publishing, etc.I installed HAXcms and forgot my passwordYour username and password can be found in _config/config.php o
-
-
-
- These are some common issues / resolutions in HAXcms related to installation, publishing, etc.
-
I installed HAXcms and forgot my password
-
Your username and password can be found in _config/config.php on the server (assuming local development)
-
I clicked login and nothing happened and now I'm locked out.
-
Clear your browser cache. A cookie is set that might be invalid.
-
-
Open a new browser and try to login again
-
-
I clicked publish and nothing happened
-
Publishing can take up to a minute or so at times since it's creating a commit, rewriting files and then the front end is waiting on the push to github before it triggers a successful response.
-
If it did fail to publish, you might not have git setup. Click the gear icon on the dashboard (site listing) and ensure you've setup github / git integration correctly.
-
-
Realize that everything is just a file and that our json outline schema is very easy to read. So if there's an issue with something related to publishing, check _sites/mysite/site.json for publishing, then _config/config.json. All settings and variables cascade in this way. Settings are stored globally, then replicated locally to allow them to be pealed off and more easily imported / exported into other setups.
- ]]>
-
-
-
- Skin a site
- https://haxtheweb.org//documentation-1/haxcms/theming/skin-a-site
- 2021-04-07T14:24:50+00:00
- 2019-03-23T15:21:47+00:00
- Theme skinning is the easiest way to build a decent looking theme in HAXcms. This method is geared toward people that know CSS and HTML but can't get into the weeds of web components or javascript.Wo
-
-
-
- Theme skinning is the easiest way to build a decent looking theme in HAXcms. This method is geared toward people that know CSS and HTML but can't get into the weeds of web components or javascript.
-
Workflow
-
Make a new site in the HAXcms UI
-
-
Select "Custom theme" as your theme
-
In the file system go to _sites/mynewsite
-/theme
-
Edit theme.html to modify the structure
-
Edit theme.css to modify the design
-
-
This is the easiest way to skin HAXcms to your liking. It's able to ship and work in CDNs and is the minimal barrier to entry for those used to seeing HTML and CSS files that they can touch and see the change. It requires no tooling to utilize either!
-
- ]]>
-
-
-
- Dev workflows
- https://haxtheweb.org//documentation-1/haxcms/theming/dev-workflows
- 2021-04-07T14:24:50+00:00
- 2019-03-23T13:58:38+00:00
- Our development workflow is as follows (for themes)All custom theme work happens in your _config directoryMake my-theme.js, pull everything together, either in this directory or in a wcfactory cat
-
-
-
- Our development workflow is as follows (for themes)
-
All custom theme work happens in your _config directory
-
-
Make my-theme.js, pull everything together, either in this directory or in a wcfactory
- catalog of elements you've made
-
Reference this in you _config/my-custom-elements.js element
-
Update the _config/config.json block that says themes
- to include something like...
This tells HAXcms UI that you can now select the theme (but don't yet, it won't be valid)
-
Local development workflow during theme development
-
We use polymer cli to serve up and work on web components locally and while you don't have to, it's recommended as part of the WCFactory workflow.
-
Make a new site in the HAXcms UI
-
-
Go to _sites/mynewsite and run polymer serve --npm --open --entrypoint dist/dev.html
-
-
-
Adjust the URL that opens to only be the IP address with no path after it
-
You'll see your site open up for local development work, which will be leveraging any assets referenced in your node_modules directory at the HAXcms project root.
-
To add / install new assets run yarn (or npm) add @what/ever-you-want --save
-, just like you would any other project you work on in FE dev
-
edit your site's site.json manually to update the theme to point to the theme location your actively working on
-
Develop away until it is to your liking
-
-
Shipping the theme
-
To ship the theme, you'll need to do a polymer build routine
Delete the symlink and replace it with your build directory
-
Now you can publish via the UI so long as you do not leverage a CDN
-
-
The future
-
Admittedly, the full on custom theme / web component development workflow is rough. It's hard to maintain a built copy in a modular system without tooling. In the future we plan on having tooling workflows built directly into WCFactory that allow you to streamline the development and creation of HAXcms themes.
-
Current limitations
-
You can't leverage existing CDNs (like webcomponents.psu.edu and whatever else is out there) that are pegged to the HAXcms project's source. You'll be creating a custom theme which then creates a custom build in effect so you'll want to ensure that you have some place that you can host the assets in order to power your site.
- ]]>
-
-
-
- CSS vars
- https://haxtheweb.org//documentation-1/haxcms/theming/css-vars
- 2021-04-07T14:24:50+00:00
- 2019-03-23T13:58:38+00:00
- CSS can be modified via CSS variables. CSS variables create a happy middle ground between the constraints of Shadow DOM (namely that styles are fully encapsulated) and designers wanting flexibility a
-
-
-
- CSS can be modified via CSS variables
-. CSS variables create a happy middle ground between the constraints of Shadow DOM (namely that styles are fully encapsulated) and designers wanting flexibility and control over design. We leverage CSS variables heavily in our template layer to allow you to "skin" just about any theme we have already.
-
A note about @apply
-
Unlike normal css variables, Polymer (the library we build our theme layer on) supports a convention for CSS variables that operate a bit more like Saas mixins. You can write blocks of code like @apply --my-variable-blob;
- which will then allow someone to mix in and apply whatever valid CSS attributes they want at that level. You can see several implemented below (both CSS variables and @apply blocks).
-
Example
-
This is an example from the haxcms-basic-theme
-which forms a clean baseline for most sites.
- // this is from the haxcms-basic-theme
-site-top-menu {
- --site-top-menu-bg: #37474f;
- --site-top-menu-link-color: #ffffff;
- --site-top-menu-indicator-color: #ffffff;
- --site-top-menu-link-active-color: var(
- --haxcms-basic-theme-accent-color
- );
- --site-top-menu-indicator-arrow: 8px;
-}
-site-children-block {
- --site-children-block-button: {
- color: #ffffff;
- }
- --site-children-block-button-active: {
- background-color: #37474f;
- color: var(--haxcms-basic-theme-accent-color);
- }
-}
-.left-col {
- min-height: 250px;
- border: 2px solid black;
- background-color: #37474f;
- color: white;
- padding: 16px;
-}
-site-active-title {
- display: inline-flex;
- --site-active-title-heading: {
- font-family: "Montserrat", "Helvetica", "Tahoma", "Geneva", "Arial",
- sans-serif;
- font-size: 16px;
- line-height: 32px;
- margin-bottom: 8px;
- text-rendering: optimizelegibility;
- font-weight: 600;
- color: white;
- }
-}
-
- ]]>
-
-
-
- Query examples
- https://haxtheweb.org//documentation-1/haxcms/theming/core-elements/query-examples
- 2021-04-07T14:24:50+00:00
- 2019-03-23T13:58:38+00:00
- Hold up there. You didn't cover any of the query tags in that last section!Ok ok, here's the deal. Queries are so important that they needed their own section. Calm down Dwight we'll handle that n
-
-
-
- Hold up there. You didn't cover any of the query tags in that last section!
-
-
Ok ok, here's the deal. Queries are so important that they needed their own section. Calm down Dwight we'll handle that now.The site-
-
-
-
- query elements are incredibly powerful aspects of HAXcms theming that deserve their own section anyway.
-Give me all of the pages who have a tag "Funny"
-
-
When it's useful
-
Always. This is by far the most powerful element in our library. It can query the site structure and effectively return anything, anywhere that matches the criteria. It is for exact criteria matching though so you won't be getting children of page X unless you specifically requested them.
-
This is great for getting things like getting all the pages that don't have parents (top level items) which is exactly how the site-top-menu
-
- tag does it in conjunction with a dom-repeat tag (in that example).
-
Caveats
-
This doesn't render anything by itself
-
-
-
You have to then know how to do a two way template bind (Polymer convention looking like {{result}}
-
-or know how to use javascript in order to bind the results to visual output
-Give me all child pages
-that are 2 to 4 levels deep.
-
-
Delivered results
-What type of query is this leveraging again?
- site-query-menu-slice
-
-
Dynamic leveling
-
The dynamic leveling flag would allow you to create a query that analyzes the current active item (as example). And then say "Always give me 2-3 levels below this". In that instance you've got a dynamic sub-set of children being returned.
-
When it's useful
-
This can be useful for a block that always shows the children of the current page in a documentation site.
A site render query attempts to standardize the practice of wiring site-query up to something visual. It requires you supply something visual to get going and has the unfortunate limitation though that what you render must not be dynamic in nature.
When you have a static set of items you want to query once and have it be dynamic based on site infrastructure yet not be changing dynamically during site view.
-
Possible usage
-
As we haven't rolled this into any themes at the time, this could be useful for placing a "latest posts" block or "upcoming events" block. Anything that's dynamic based on the data being passed in but yet unchanging once it's loaded. Think of this as a simple "views" construct if you are from the Drupal worldview.
- ]]>
-
-
-
- Web components
- https://haxtheweb.org//documentation-1/haxcms/theming/web-components
- 2021-04-07T14:24:50+00:00
- 2019-03-23T13:58:38+00:00
- Do you know full on web component development? Well, you can build a new theme from scratch. The best way to learn is by picking a part some of our examples. For this we'll analyze the haxcms-slide-th
-
-
-
- Do you know full on web component development? Well, you can build a new theme from scratch. The best way to learn is by picking a part some of our examples. For this we'll analyze the haxcms-slide-theme
-
-.
-
As you can see this theme imports a few basic components helpful in the development of most themes. First we import PolymerElement and the HAXCMSTheme mix-in from our theme wiring library. Theme wiring provides a basis for wiring any custom element into the state management of HAXcms, typically without having to deal with any concepts of state!
-
Mix-ins
- class HAXCMSSlideTheme extends HAXCMSTheme(PolymerElement) {
-
-
Next we get the mix-in statement. Note how HAXCMSTheme wraps the PolymerElement class, thereby giving us a mix of the two together.
-
HAXCMSTheme mix-in class
-
You can learn more about what the mix-in class provides by digging into the HAXCMSThemeWiring.js
-
- class. This class bridges the HAXcms store (written in mobx) with the design layer. This way you can leverage anything in the store by writing the polymer convention for referencing a data bound variable in the template.
That last line with activeItemFields is part of the raw power under the hood of this approach. You can use HAXcms to create field definitions (in HAXschema
-
-) that then extend the capabilities of your pages.
-
Required CSS
-
There is one small required block of CSS when doing web component / theme development for HAXcms. It is the following:
- /**
- * Hide the slotted content during edit mode. This must be here to work.
- */
-:host([edit-mode]) #slot {
- display: none;
-}
-
-
This helps ensure that when your user clicks the edit button that they see the HAXeditor as opposed to the body of content they are currently working with. Then when they hit save, the HAXeditor sends the content to the backend which then updates the front end and they see the changes. This CSS ensures that it isn't visible during editing.
-
Required HTML
-
-
-
-
-
Related to the CSS, the following block of HTML must appear in your template somewhere (or in the case of simple-blog
-, an element leveraged by your theme). You can make this look like whatever you want beyond this but this ensures the HAXeditor can correctly target and be integrated using the HAXCMSTheme mix-in. There are ways to position and reposition the HAXeditor dynamically that will not be covered here but can be seen in simple-blog
-.
-
From there, design away. Write whatever CSS and HTML and JS you want! The example themes referenced in our docs all provide blue prints for different ways of leveraging our template system.
-
Next we'll discuss our Core template elements which you'll want to leverage in order to make theme development even cleaner!
- ]]>
-
-
-
- Get Involved!
- https://haxtheweb.org//get-involved-1
- 2021-04-07T14:24:50+00:00
- 2019-03-21T19:46:24+00:00
- Join our communityJoin us on the HAXTheWeb Slack channelJoin us for HAXcamp Un-code every Friday 3 pm - 5 pm (EST)Follow / use the #HAXTheWeb hash tagJoin our projectsHAXcms - That which
-
-
-
- Join our community
-
Great! Here's some of the best ways for organizations to try "HAX" and get involved in the project.
-
Reach out to any of the members of the core project team on our slack
-. We're happy to do conference calls to forge partnerships especially around HAX or OER production solution though it has implications for any public site!
HAX makes up multiple projects across hundreds of web components and various other repos. It can be a bit overwhelming but we want you to imagine something... Imagine being a developer on HAX.
-
-
Step 'ight up
-
-
urz te next contrib
-
Because all it takes to get involved in HAX is, that's right, showing up in our repos and getting involved! Yes you too can be just as meme-able as we are!
-
All things HAX are powered by people just like you, wanting to make the web a better, more accessible, easier to use, less painful to develop for... place.Help us make that a reality and you too could have Snoop Dawg escorting you over to a brand new car*
*Claims vs reality may vary. Just help us out and we'll see where it goes..
-
- ]]>
-
-
-
- Presentations
- https://haxtheweb.org//welcome/presentations
- 2021-04-07T14:24:50+00:00
- 2019-03-18T12:06:57+00:00
- This is the youtube playlist of all things HAXTheWebThis playlist is updated on a regular basis so make sure to subscribe to the youtube channel for updates. There's also many other playlists relat
-
-
-
- This is the youtube playlist
- of all things HAXTheWeb
-
-
This playlist is updated on a regular basis so make sure to subscribe to the youtube channel for updates. There's also many other playlists related to all things ELMS:LN, WCFactory, HAXcms and web components in general.
- ]]>
-
-
-
- Core elements
- https://haxtheweb.org//documentation-1/haxcms/theming/core-elements
- 2021-04-07T14:24:50+00:00
- 2019-03-13T00:45:37+00:00
- While you're not required to use them, HAXcms supplies a series of elements that can make theme development effortless. You can see the source of these in greater detail under the theme directory of h
-
-
-
- While you're not required to use them, HAXcms supplies a series of elements that can make theme development effortless. You can see the source of these in greater detail under the theme directory of haxcms-elements
-
-
-. This is a brief overview of what they are and what they provide to your interface.
-
HAXcms seeks to apply the SDS pattern, a technique we made up just for this sentence, for dramatic effect
-. As everyone knows who is about to read the next heading, SDS stands for:
-
So. Damn. Semantic.
-
Whew, I need an ice cold drink to wash away the semantic sweats.
-
Yes, that's right, HAXcms allows you to theme a complex state managed system without needing to understand state management... like... at all.
-
"But I understand state management and it's important to me"
-
That's awesome, four people on twitter, but most designers just want to design! They don't need or want to understand the intricacies of making a collapsed field area expand relative to what item has been dictated as active in the store*.
-
*an intentionally confusing worded sentence
-
-
-
-
We use MobX to do our state management if that's something you care about and some of our themes directly implement and interface with the state management layer. See Simple Blog's footer element
-
-
- for a great example of why state management is a PITA.
-
-
-
Back to the elements jerk
-
Ok fine, here they are. Here's the list of ES module imports to get them
Now here's what each of them provide you (pretty self explanatory because #SDS)
-
site-active-title -
-the title of the active item wrapped in a h1 tag
-
-
site-children-block
- - all child menu items based on a criteria match
-
site-outline-block
- - part of the outline based on criteria match
-
site-footer
- - a basic footer with license element based on site details
-
site-modal
- - a basic modal with button that can house other elements
-
site-breadcrumb
-
- - a breadcrumb trail for the active menu item
-
site-dot-indicator
- - site links but as a simple line of dots
-
site-menu-button
- - buttons for navigating through the active items in the menu. This is next, previous, parent and first child kinds of options.
-
-
-
site-menu
-
- - A visualization of the hierarchy of your site, complete with checkmarks given per page the user goes to (optional) as well as a lot of styling options and a highlighted bar that scrolls the menu into view for small screens. It's fantastic and one line.
-
site-top-menu
- - Top level menu links with indicator that scrolls to focus
-
site-print-button
- - print button with support for 4 levels of printing the site
-
site-rss-button
- - a button that displays a link (opened in a new window) to get the RSS feed in RSS 2.0 or Atom 1.0 format (also applies correct semantic values for bots to discover)
-
site-title
- - a link to the homepage of the site wrapped in an h1 tag
-
-
-
-
See the elements themselves for more details API examples and check out our themes as we leverage them heavily across the core themes.
-
A word about style
-
We use CSS variables to style all the bits inside of our custom elements. So if you don't like the styling, look at the CSS variables we make available and style away. The "Learn 2 theme"
-
-
- is a great example implementing multiple levels of styling against multiple HAXcms site elements. You can always you know, go back and reread the CSS variables section
-.
-
- ]]>
-
-
-
- Publishing
- https://haxtheweb.org//documentation-1/haxcms/publishing
- 2021-04-07T14:24:50+00:00
- 2019-02-20T06:10:05+00:00
- HAXcms requires being published in order to be visible to other people. Working locally or on Desktop or on a server, is akin to you writing a document on your computer. It's not shared with anyone. W
-
-
-
- HAXcms requires being published in order to be visible to other people. Working locally or on Desktop or on a server, is akin to you writing a document on your computer. It's not shared with anyone. We recommend you setup publishing ahead of time to save hassle later.
-
Setting up publishing
-
From the HAXcms site listing
- page, click the settings gear in the top right corner.
-
Next you'll see a modal that has options for plugging in your github credentials. We don't save your password and this aspect is optional. If you do enter your password, a one time API call is made on your behalf from your container which will setup an ssh key pair. This allows for all future requests to publish to happen automatically on your behalf. Your password is not stored. If you don't want to set this part up, you can plug in the rest of the git settings, save, and then manually publish files after using the UI (see last heading on this page).
-N
Publishing from your sites / new sites
-
When you want to share your site with people or update your website, hitting the Publish button inside of your site is how to do this. Click the settings gear in the bottom right to get started.
-
Currently GitHub is the only provider supported in the local installation method (or from DDEV / one of the supported container providers). In the future hitting publish will have additional development flexibility.
-
Understanding what's actually happening
-
-
When you hit publish, a few things happen to make your site "web ready". This is the general order of those operations:
-
HAXcms takes the underlying files and commits them all to version control (though they already should be)
-
-
-
It then pushes these to the origin of the git repository (likely github)
-
-
Then it switches to the branch you do your publishing from. In github, this is the gh-pages
-
- branch, but can deviate as needed.
-
-
Next it deletes symlinks and replaces them with the correct references as needed and leverages the "cdn provider" you specified when setting up HAXcms in order to super charge your files for end users.
-
-
It uses twig
-
- to step through and correctly rewrite references in the index.html of your site to match the paths of where it's going to be sent
-
-
Then it adds all this to version control and sends it up to your gh-pages branch.
-
-
It does some local file clean up and sets things back to master branch for the next time you go to work on everything
-
-
-
When this is all done, in the UI you'll see a link to your site after it's indicated a successful publish (meaning it pushed the files up there). Depending on where you host your content it may take a few minutes to see the change, though GitHub is usually up within about 2 minutes.
-
Once about 2 minutes or so has passed, refresh your live site address or type in the URL of the site. If you've been there previously, you'll probably see the same content / theme as the last time you were there. After about 5 seconds, a message will pop up indicating "new content available" and clicking it (or refreshing the browser) will give you your updated content.
-
This last step happens because of what's called a "service worker". This enables your site to be 100% offline capable and ensures that your site only uses traffic and data when it's absolutely necessary.
-
A note on non UI publishing workflows
-
You might not have (or want to) setup the credentials between HAXcms and github / your git repo. That's ok. After you hit publish go to terminal / a Git GUI and run the following to publish your site:
HAXcms will have made sure that the gh-pages and master branches are valid for distribution, even if it wasn't able to actually send these files to their publishing destination.
-
- ]]>
-
-
-
- HAXcms
- https://haxtheweb.org//documentation-1/haxcms
- 2021-04-07T14:24:50+00:00
- 2019-02-20T06:10:05+00:00
- HAXcms, that which powers the site you are currently reading is a powerful "static site generator" paradigm. It leverages server technology in order to orchestrate a static site. That way the "server"
-
-
-
- HAXcms, that which powers the site you are currently reading is a powerful "static site generator" paradigm. It leverages server technology in order to orchestrate a static site. That way the "server" is only used when needed for a user to securely develop their content.
-
Difference from past static generators
-
Unlike solutions like Jekyll
-
-, HAXcms is for anyone to publish a website, not just those that understand command line. HAXcms is intended to be installed and then allow users to entirely use a UI to create, publish and manage micro-sites.
-
Visualization
- ]]>
-
-
-
- Structure
- https://haxtheweb.org//documentation-1/haxcms/structure
- 2021-04-07T14:24:50+00:00
- 2019-02-20T06:10:05+00:00
- By design we've got a very simple structure. The goal of HAXcms isn't to lock you into anything and so we've simplified our file structure over other solutions.The key directories / files include:fi
-
-
-
- By design we've got a very simple structure. The goal of HAXcms isn't to lock you into anything and so we've simplified our file structure over other solutions.
-
The key directories / files include:
-
files - any files you've uploaded through the HAX interface
-
-
pages - folders named by their content uri that have index.html in it, no structure other then what you created when hitting save
-
site.json - JSON Outline Schema object that defines the pages in your site and their relationship to each other
-
index.html - front page of the PWA that stitch it all together
-
service-worker.js - makes it a PWA, no need to edi this
-
-
Screen grab of a microsite
- ]]>
-
-
-
- Installation
- https://haxtheweb.org//documentation-1/haxcms/installation
- 2021-04-07T14:24:50+00:00
- 2019-02-20T06:10:05+00:00
- Generic PHP install directionsHave PHP? well then you can setup HAXcms pretty quick. Just download HAXcms and navigate to its directory in a browser. It'll attempt to automatically install (which is
-
-
-
- Generic PHP install directions
-
Have PHP? well then you can setup HAXcms pretty quick. Just download HAXcms and navigate to its directory in a browser. It'll attempt to automatically install (which is to create two basic folders). If all goes well you'll see some ASCii art telling you what your password is. HAXcms seeks to be a 0 config installation so if anything didn't work or make sense, just drop us a line in the issue queues.
-
Or from Command Line...
-
Just run this one command and you'll be HAXing the web in no time! This will step you through prompts (which can be scripted via arguments) to feed the backend what it needs to create the few configuration files it uses to load.
- # HAX the web and answer the prompts
-bash scripts/haxtheweb.sh
-
-
A note on bash
-
-
-
-
-
If you're having issues installing via the bash script, ensure you are on bash version 4.x. Some OS flavors start at 3.x which won't work.
-
-
-
-
-
MAMP
-
MAMP
-
-
-
-
-
-
- allows Mac and PC users to rapidly install a working webdev stack on their machine. Here's the steps you need to take if using this (or on similar site hosting).
-
Download the latest copy of HAXcms from github
-
-
-
- and place this in MAMP/htdocs
-
-either at the root level (as in copying the files you download into htdocs as shown in the image below) or by placing the folder in the directory (in the case where you have MAMP already installed / want to keep things tidy).
-
-
Open MAMP and hit the Start Servers Button
-
-
-
-
-
-
Click MY WEBSITE in MAMP start page to get started
-
-
-
-
-
Now you can build website organically off of MAMP!
-
DDEV / Docksal / Lando / Vagrant
-
We recommend using HAXcms in a docker container manager like ddev
-
-
-
-
-
-
-, though based on above you can see basically we're just downloading and running one command to get going. We support all of the above methods so pick the one you work with most often.
open a terminal window, go to the directory and type ddev start
-
-
-
-
-
-
-
- (for ddev) or fin init
-
-
-
-
-
-
-
- (for docksal) or lando start && lando magic
-
-
-
-
-
-
-
- (for lando) or vagrant up
-
-
-
-
-
-
-
- (for vagrant)
-
-
-
-
-
-
-
-
-
go to the link any of them give you in a browser
-
-
-
-
-
-
-
-
-
username/password is admin
-
-
-
-
-
-
-
-/admin
-
-
-
-
-
-
-
- to get building out static sites locally that you can push up anywhere!
-
-
-
-
-
-
-
-
-
Click the icon in the top right and you're off and running!
-
-
-
-
-
-
-
-
-
-
Apache gotchas
-
If installing on an existing server it might already have apache configurations that would cause HAXcms to have issues out of the gate
- (or any CMS for that matter). Make sure local overrides are allowed with something like the following:
-
- # /etc/apache2/apache2.conf
-
-<directory var/www/haxlocation>
- Options Indexes FollowSymLinks
- AllowOverride All
- Require all granted
-</directory>
-
- ]]>
-
-
-
- Concepts
- https://haxtheweb.org//documentation-1/haxcms/concepts
- 2021-04-07T14:24:50+00:00
- 2019-02-20T06:10:05+00:00
- HAXcms seeks to be a microsite generator and manager that doesn't require any command line in order to operate. HAXcms leverages HAX to give a best in class authoring experience while HAXcms seeks to
-
-
-
- HAXcms seeks to be a microsite generator and manager that doesn't require any command line in order to operate
-. HAXcms leverages HAX to give a best in class authoring experience while HAXcms seeks to eliminate all the barriers to then publishing that content online.
-
Some words and phrases worth understanding in HAXcms
-
HAXeditor - the HAX editor
-
microsite - An individual site that's been created by a user
-
Outline - All sites are an outline, we use JSON Outline Schema to manage this
-
Theme - A single web component based theme that's agnostic of content
-
Elements / web components - design assets that work anywhere
-
- ]]>
-
-
+ [object Promise]
\ No newline at end of file
diff --git a/browserconfig.xml b/browserconfig.xml
index 8ea6a2c..b78f1d2 100644
--- a/browserconfig.xml
+++ b/browserconfig.xml
@@ -2,9 +2,9 @@
-
-
-
+
+
+ #009dc7
diff --git a/build b/build
new file mode 120000
index 0000000..8fdb6a2
--- /dev/null
+++ b/build
@@ -0,0 +1 @@
+../../build
\ No newline at end of file
diff --git a/build-haxcms.js b/build-haxcms.js
index 77c8d35..2646ae2 100644
--- a/build-haxcms.js
+++ b/build-haxcms.js
@@ -1,9 +1,20 @@
+// overload how define works so that we can prevent bricking issues
+// when classes get loaded from multiple sources with the same name space
+// this is a copy of the dedup-fix.js script we use in local testing / es5 routines
+const _customElementsDefine = window.customElements.define;
+window.customElements.define = (name, cl, conf) => {
+ if (!customElements.get(name)) {
+ _customElementsDefine.call(window.customElements, name, cl, conf);
+ } else {
+ console.warn(`${name} has been defined twice`);
+ }
+};
// HAXcms specific clean up and platforn integration
// this ties in custom theme files as well as removes DOM nodes related
// to serving a legacy audience in the event this is evergreen (most times)
if (/^h/.test(document.location)) {
try {
- var def = document.getElementsByTagName('script')[0];
+ var scriptDef = document.getElementsByTagName('script')[0];
// if a dynamic import fails, we bail over to the compiled version
new Function('import("");');
// remove fallback cause if we passed dynamic import then we are evergreen
@@ -14,7 +25,7 @@ if (/^h/.test(document.location)) {
var build2 = document.createElement('script');
build2.src = './custom/build/custom.es6.js';
build2.type = 'module';
- def.parentNode.insertBefore(build2, def);
+ scriptDef.parentNode.insertBefore(build2, scriptDef);
}
} catch (err) {
var ancient=false;
@@ -54,16 +65,66 @@ var cdn = "./";
if (window.__appCDN) {
cdn = window.__appCDN;
}
+// reset styles that we apply to all hax sites for some level of normalization
+// across base HTML tags as well as css vars for styling system wide things from 1 place
+var baseResetStyles = 'build/es6/node_modules/@haxtheweb/haxcms-elements/lib/base.css';
// css files load faster when implemented this way
var link = document.createElement('link');
link.rel = 'stylesheet';
-link.href = cdn + 'build/es6/node_modules/@lrnwebcomponents/haxcms-elements/lib/base.css';
+link.href = cdn + baseResetStyles;
link.type = 'text/css';
-def.parentNode.insertBefore(link, def);
+link.onerror = (e) => { haxcmsFallbackStylesError(e);};
+// get first link in the document
+var linkDef = document.getElementsByTagName('link')[0];
+linkDef.parentNode.insertBefore(link, linkDef);
if (!window.__appCustomEnv) {
var link2 = document.createElement('link');
link2.rel = 'stylesheet';
link2.href = './theme/theme.css';
link2.type = 'text/css';
- def.parentNode.insertBefore(link2, def);
+ linkDef.parentNode.insertBefore(link2, linkDef);
+}
+// if we fail to load the module, we need to fall back to known sources
+// and reattempt to inject the CDN location. This is a last ditch effort
+// though opens the ability for us to download user sites and if plugged
+// into other hax housing then it'll work but also just work stand alone
+// as a downloaded package
+var haxCdn = cdn;
+function haxcmsFallbackStylesError(e) {
+ var cdn = haxCdn;
+ if (!window.__appCDNBlockFallback) {
+ var link = document.createElement('link');
+ link.rel = 'stylesheet';
+ link.type = 'text/css';
+ link.onerror = (e) => { haxcmsFallbackStylesError(e);};
+ // if the module fails to load at the set CDN location, try to fail back to known sources
+ if (cdn === "./") {
+ // hax cloud fallback
+ haxCdn = "https://cdn.hax.cloud/cdn/";
+ link.href = haxCdn + baseResetStyles;
+ linkDef.parentNode.insertBefore(link, linkDef);
+ console.warn(cdn + " failed to respond, styles back to alternative: " + haxCdn);
+ }
+ else if (cdn === "https://cdn.hax.cloud/cdn/") {
+ // psu mirror
+ haxCdn = "https://cdn.webcomponents.psu.edu/cdn/";
+ link.href = haxCdn + baseResetStyles;
+ linkDef.parentNode.insertBefore(link, linkDef);
+ console.warn(cdn + " failed to respond, styles back to alternative: " + haxCdn);
+ }
+ else if (cdn === "https://cdn.webcomponents.psu.edu/cdn/") {
+ // known mirror
+ haxCdn = "https://cdn.waxam.io/";
+ link.href = haxCdn + baseResetStyles;
+ linkDef.parentNode.insertBefore(link, linkDef);
+ console.warn(cdn + " failed to respond, styles back to alternative: " + haxCdn);
+ }
+ else {
+ // :( we're out of options, just reset these values to default
+ // but we aren't working in this scenario bc both CDNs failed
+ // and local delivery could not be found
+ haxCdn = "./";
+ console.error("Styles Local delivery failed and all alternative CDNs failed to load. You might be offline, in a secure environment or doing testing intentionally to generate this *shrug*");
+ }
+ }
}
\ No newline at end of file
diff --git a/build.js b/build.js
index 360739f..c0eae62 100644
--- a/build.js
+++ b/build.js
@@ -1 +1 @@
-window.process={env:{NODE_ENV:"production"}};var cdn="./";window.WCGlobalCDNPath&&(cdn=window.WCGlobalCDNPath),window.__appCDN&&(cdn=window.__appCDN);var fname="wc-registry.json";window.WCGlobalRegistryFileName&&(fname=window.WCGlobalRegistryFileName),window.WCAutoloadRegistryFile=cdn+fname;try{var def=document.getElementsByTagName("script")[0];new Function("import('');");var ani=document.createElement("script");ani.src=cdn+"build/es6/node_modules/web-animations-js/web-animations-next-lite.min.js",def.parentNode.insertBefore(ani,def);var build=document.createElement("script");build.src=cdn+"build/es6/node_modules/@lrnwebcomponents/wc-autoload/wc-autoload.js",build.type="module",def.parentNode.insertBefore(build,def)}catch(e){var legacy=document.createElement("script");legacy.src=cdn+"assets/build-polyfills.js",def.parentNode.insertBefore(legacy,def);var buildLegacy=document.createElement("script");buildLegacy.src=cdn+"assets/build-legacy.js",def.parentNode.insertBefore(buildLegacy,def)}
\ No newline at end of file
+window.process={env:{NODE_ENV:"production"}};var cdn="./";window.WCGlobalCDNPath&&(cdn=window.WCGlobalCDNPath),window.__appCDN&&(cdn=window.__appCDN);var fname="wc-registry.json";window.WCGlobalRegistryFileName&&(fname=window.WCGlobalRegistryFileName),window.WCAutoloadRegistryFile=cdn+fname;var autoloaderScriptLocation="build/es6/node_modules/@haxtheweb/wc-autoload/wc-autoload.js";try{var def=document.getElementsByTagName("script")[0];new Function("import('');"),animationPolyfillTest();var build=document.createElement("script");build.src=cdn+autoloaderScriptLocation,build.type="module",build.onerror=e=>{!function fallbackChecks(e){var cdn=window.__appCDN;if(!window.__appCDNBlockFallback){var build=document.createElement("script");build.type="module",build.onerror=e=>{fallbackChecks(e)},"./"===cdn?(window.__appCDN="https://cdn.hax.cloud/cdn/",window.WCAutoloadRegistryFile=window.WCAutoloadRegistryFile.replace(cdn,window.__appCDN),build.src=window.__appCDN+autoloaderScriptLocation,def.parentNode.insertBefore(build,def),console.warn(cdn+" failed to respond, falling back to alternative: "+window.__appCDN)):"https://cdn.hax.cloud/cdn/"===cdn?(window.__appCDN="https://cdn.webcomponents.psu.edu/cdn/",window.WCAutoloadRegistryFile=window.WCAutoloadRegistryFile.replace(cdn,window.__appCDN),build.src=window.__appCDN+autoloaderScriptLocation,def.parentNode.insertBefore(build,def),console.warn(cdn+" failed to respond, falling back to alternative: "+window.__appCDN)):"https://cdn.webcomponents.psu.edu/cdn/"===cdn?(window.__appCDN="https://cdn.waxam.io/",window.WCAutoloadRegistryFile=window.WCAutoloadRegistryFile.replace(cdn,window.__appCDN),build.src=window.__appCDN+autoloaderScriptLocation,def.parentNode.insertBefore(build,def),console.warn(cdn+" failed to respond, falling back to alternative: "+window.__appCDN)):(window.__appCDN="./",window.WCAutoloadRegistryFile=window.WCAutoloadRegistryFile.replace(cdn,window.__appCDN),console.error("Local delivery failed and all alternative CDNs failed to load. You might be offline, in a secure environment or doing testing intentionally to generate this *shrug*")),animationPolyfillTest()}}()},def.parentNode.insertBefore(build,def)}catch(err){var buildLegacy=document.createElement("script");buildLegacy.src=cdn+"assets/build-legacy.js",def.parentNode.insertBefore(buildLegacy,def)}function animationPolyfillTest(){if(!Element.prototype.animate){var ani=document.createElement("script");ani.src=window.__appCDN+"build/es6/node_modules/web-animations-js/web-animations-next-lite.min.js",def.parentNode.insertBefore(ani,def)}}
\ No newline at end of file
diff --git a/files/haxcms-managed/256x256-3450183.png b/files/haxcms-managed/256x256-3450183.png
new file mode 100644
index 0000000..e9cd321
Binary files /dev/null and b/files/haxcms-managed/256x256-3450183.png differ
diff --git a/files/haxcms-managed/32x32-3450183.png b/files/haxcms-managed/32x32-3450183.png
new file mode 100644
index 0000000..67b4a3f
Binary files /dev/null and b/files/haxcms-managed/32x32-3450183.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/.datignore b/github-pages-deploy-action-temp-deployment-folder/.datignore
new file mode 100644
index 0000000..2a4e8b1
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/.datignore
@@ -0,0 +1,6 @@
+.git
+.dat
+node_modules
+*.log
+**/.DS_Store
+Thumbs.db
diff --git a/github-pages-deploy-action-temp-deployment-folder/.gitignore b/github-pages-deploy-action-temp-deployment-folder/.gitignore
new file mode 100644
index 0000000..a89957d
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/.gitignore
@@ -0,0 +1,5 @@
+.DS_Store
+node_modules
+dist
+yarn.lock
+files/h5p
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/.htaccess b/github-pages-deploy-action-temp-deployment-folder/.htaccess
new file mode 100644
index 0000000..43d8fe0
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/.htaccess
@@ -0,0 +1,79 @@
+# Protect files and directories from prying eyes.
+
+
+ Require all denied
+
+
+ Order allow,deny
+
+
+# Don't show directory listings for URLs which map to a directory.
+Options -Indexes
+# Follow symbolic links in this directory.
+Options +FollowSymLinks
+# Set the default handler.
+DirectoryIndex index.php index.html
+# Override PHP settings that cannot be changed at runtime. See
+
+ php_flag magic_quotes_gpc off
+ php_flag magic_quotes_sybase off
+ php_flag register_globals off
+ php_flag session.auto_start off
+ php_value mbstring.http_input pass
+ php_value mbstring.http_output pass
+ php_flag mbstring.encoding_translation off
+
+# Requires mod_expires to be enabled.
+
+ # Enable expirations.
+ ExpiresActive On
+ # Cache all files for 2 weeks after access (A).
+ ExpiresDefault A1209600
+
+ ExpiresActive Off
+
+
+# Various rewrite rules.
+
+ RewriteEngine on
+ # Set "protossl" to "s" if we were accessed via https://. This is used later
+ # if you enable "www." stripping or enforcement, in order to ensure that
+ # you don't bounce between http and https.
+ RewriteRule ^ - [E=protossl]
+ RewriteCond %{HTTPS} on
+ RewriteRule ^ - [E=protossl:s]
+ # Make sure Authorization HTTP header is available to PHP
+ # even when running as CGI or FastCGI.
+ RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+ # Pass all requests not referring directly to files in the filesystem to
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteCond %{REQUEST_FILENAME} !-d
+ RewriteRule ^ . [L]
+
+ # Rules to correctly serve gzip compressed CSS and JS files.
+ # Requires both mod_rewrite and mod_headers to be enabled.
+
+ # Serve gzip compressed CSS files if they exist and the client accepts gzip.
+ RewriteCond %{HTTP:Accept-encoding} gzip
+ RewriteCond %{REQUEST_FILENAME}\.gz -s
+ RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
+ # Serve gzip compressed JS files if they exist and the client accepts gzip.
+ RewriteCond %{HTTP:Accept-encoding} gzip
+ RewriteCond %{REQUEST_FILENAME}\.gz -s
+ RewriteRule ^(.*)\.js $1\.js\.gz [QSA]
+ # Serve correct content types, and prevent mod_deflate double gzip.
+ RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
+ RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]
+
+ # Serve correct encoding type.
+ Header set Content-Encoding gzip
+ # Force proxies to cache gzipped & non-gzipped css/js files separately.
+ Header append Vary Accept-Encoding
+
+
+
+# Add headers to all responses.
+
+ # Disable content sniffing, since it's an attack vector.
+ Header always set X-Content-Type-Options nosniff
+
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/404.html b/github-pages-deploy-action-temp-deployment-folder/404.html
new file mode 100644
index 0000000..3cad40d
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/404.html
@@ -0,0 +1,46 @@
+
+
+
+
+ Single Page Apps for GitHub Pages
+
+
+
+
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/CNAME b/github-pages-deploy-action-temp-deployment-folder/CNAME
new file mode 100644
index 0000000..8f73e60
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/CNAME
@@ -0,0 +1 @@
+https://haxtheweb.org
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/LICENSE.md b/github-pages-deploy-action-temp-deployment-folder/LICENSE.md
new file mode 100644
index 0000000..9db3c7c
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/LICENSE.md
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2018 The Pennsylvania State University
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/README.md b/github-pages-deploy-action-temp-deployment-folder/README.md
new file mode 100644
index 0000000..807c764
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/README.md
@@ -0,0 +1,20 @@
+# HAXcms micro-site
+This is a HAXcms generated and managed micro-site. It can run on it's own but it was generated by a HAXcms system somewhere.
+
+## Developer mode
+HAXcms primary audience is people doing things entirely through the UI. It is however creating everything in a way that's very developer friendly though. This means you can peal this off from the original place it came from and run this as a stand alone repo by:
+
+- leveraging the included package.json
+- removing the symlinks to dist / node_modules / build
+- copying the dist directory from the project root into your local setup: https://github.com/elmsln/haxcms/tree/master/dist
+
+Using this approach you'll have to manage dependencies on your own but you'll be able to utilize custom themes / elements that you can to show up. If you do add any new elements or themes you'll need to ship this repo with the `polymer build` command executed in order to bundle / compile everything together for usage.
+
+### special note
+The CDN mirrors for HAXcms may or may not include the elements you wish to extend your project with so those options for rapid distributed publishing may not be availble.
+
+# HAXcms
+HAX CMS seeks to be the smallest possible back-end CMS to make HAX work and be able to build websites with it. Leveraging JSON Outline Schema, HAX is able to author multiple pages, which it then writes onto the file system.
+
+## License
+[Apache 2.0](LICENSE.md)
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-144x144.png b/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-144x144.png
new file mode 100644
index 0000000..7eaf3a0
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-144x144.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-192x192.png b/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-192x192.png
new file mode 100644
index 0000000..393eaee
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-192x192.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-36x36.png b/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-36x36.png
new file mode 100644
index 0000000..0348ab9
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-36x36.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-48x48.png b/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-48x48.png
new file mode 100644
index 0000000..0f7c75e
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-48x48.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-72x72.png b/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-72x72.png
new file mode 100644
index 0000000..dd5380b
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-72x72.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-96x96.png b/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-96x96.png
new file mode 100644
index 0000000..2bc9dda
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/android-icon-96x96.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-114x114.png b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-114x114.png
new file mode 100644
index 0000000..245e2c6
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-114x114.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-120x120.png b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-120x120.png
new file mode 100644
index 0000000..dbbb9cb
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-120x120.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-144x144.png b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-144x144.png
new file mode 100644
index 0000000..7eaf3a0
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-144x144.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-152x152.png b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-152x152.png
new file mode 100644
index 0000000..fd5381e
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-152x152.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-180x180.png b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-180x180.png
new file mode 100644
index 0000000..ca856bc
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-180x180.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-57x57.png b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-57x57.png
new file mode 100644
index 0000000..fff5958
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-57x57.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-60x60.png b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-60x60.png
new file mode 100644
index 0000000..d945f05
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-60x60.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-72x72.png b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-72x72.png
new file mode 100644
index 0000000..dd5380b
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-72x72.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-76x76.png b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-76x76.png
new file mode 100644
index 0000000..12e9408
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-76x76.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-precomposed.png b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-precomposed.png
new file mode 100644
index 0000000..6078847
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon-precomposed.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon.png b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon.png
new file mode 100644
index 0000000..6078847
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/apple-icon.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/babel-bottom.js b/github-pages-deploy-action-temp-deployment-folder/assets/babel-bottom.js
new file mode 100644
index 0000000..5547b81
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/assets/babel-bottom.js
@@ -0,0 +1,5 @@
+XSym
+0030
+a5cc76101e280fa70b86fe7d9c31694d
+../../../babel/babel-bottom.js
+
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/babel-top.js b/github-pages-deploy-action-temp-deployment-folder/assets/babel-top.js
new file mode 100644
index 0000000..3f424fa
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/assets/babel-top.js
@@ -0,0 +1 @@
+!function(t){"use strict";function e(t,e,r,o){var i=e&&e.prototype instanceof n?e:n,a=Object.create(i.prototype),u=new p(o||[]);return a._invoke=c(t,r,u),a}function r(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}function n(){}function o(){}function i(){}function a(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function u(t){function e(n,o,i,a){var u=r(t[n],t,o);if("throw"!==u.type){var c=u.arg,f=c.value;return f&&"object"==typeof f&&v.call(f,"__await")?Promise.resolve(f.__await).then(function(t){e("next",t,i,a)},function(t){e("throw",t,i,a)}):Promise.resolve(f).then(function(t){c.value=t,i(c)},a)}a(u.arg)}var n;this._invoke=function(t,r){function o(){return new Promise(function(n,o){e(t,r,n,o)})}return n=n?n.then(o,o):o()}}function c(t,e,n){var o="suspendedStart";return function(i,a){if("executing"===o)throw new Error("Generator is already running");if("completed"===o){if("throw"===i)throw a;return{value:void 0,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var c=f(u,n);if(c){if(c===j)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===o)throw o="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o="executing";var l=r(t,e,n);if("normal"===l.type){if(o=n.done?"completed":"suspendedYield",l.arg===j)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o="completed",n.method="throw",n.arg=l.arg)}}}function f(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,f(t,e),"throw"===e.method))return j;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return j}var o=r(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,j;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,j):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,j)}function l(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function s(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function p(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(l,this),this.reset(!0)}function y(t){if(t){var e=t[w];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,n=function e(){for(;++r0?0:1,i=r.findLength("StartToStart",a,this.range),n=r.findNodeByPos(e,i,t),this.startContainer=n.el,this.startOffset=n.offset,o=r.findLength("StartToEnd",a,this.range),n=r.findNodeByPos(e,o,1),this.endContainer=n.el,this.endOffset=n.offset,this.selectionStart=r.findLength("StartToStart",a,this.range,!0),this.selectionEnd=r.findLength("StartToEnd",a,this.range,!0)},t.prototype.select=function(){return this.range.select()},t.prototype.setStart=function(t,e){var n,o;return r.getText(t).length>=e&&e>=0?(o=this.range.duplicate(),3===t.nodeType&&(n=r.findPosFromNode(t),o.moveToElementText(t.parentNode),o.moveStart("character",n+e)),-1===this.range.compareEndPoints("StartToEnd",o)&&this.range.setEndPoint("EndToStart",o),this.range.setEndPoint("StartToStart",o)):void 0},t.prototype.setEnd=function(t,e){var n,o;return r.getText(t).length>=e&&e>=0?(o=this.range.duplicate(),3===t.nodeType&&(n=r.findPosFromNode(t),o.moveToElementText(t.parentNode),o.moveStart("character",n+e)),this.range.setEndPoint("EndToStart",o)):void 0},t.prototype.selectNodeContents=function(t){return this.range.moveToElementText(t)},t.prototype.collapse=function(t){return t?this.range.setEndPoint("EndToStart",this.range):this.range.setEndPoint("StartToEnd",this.range)},t.prototype.compareBoundaryPoints=function(t,e){return this.range.compareEndPoints(t,e.range)},t.prototype.cloneRange=function(){var e;return(e=new t).range=this.range.duplicate(),e.init(),e},t.prototype.detach=function(){return delete this.range},t.prototype.getBoundingClientRect=function(){var e;return{width:(e=this.range.getBoundingClientRect()).right-e.left,height:e.bottom-e.top,left:e.left,right:e.right,bottom:e.bottom,top:e.top}},t.prototype.toString=function(){return this.range.text||""},t}(),o=function(){function t(){this.selection=e.selection,this.ranges=[],this.init()}return t.prototype.init=function(){var t,e,n,o,r;return this.rangeCount=this.ranges.length,this.rangeCount?(e=this.ranges[0],null==this.prev&&(this.prev=e),0===e.compareBoundaryPoints(Range.END_TO_END,this.prev)?(t=(o=["end","start"])[0],n=o[1]):(t=(r=["start","end"])[0],n=r[1]),this.anchorNode=e[t+"Container"],this.anchorOffset=e[t+"Offset"],this.focusNode=e[n+"Container"],this.focusOffset=e[n+"Offset"],this.isCollapsed=this.anchorNode===this.focusNode):void 0},t.prototype.getRangeAt=function(t){return this.ranges[t]},t.prototype.setRangeAt=function(t,e){return this.prev=this.ranges[t],this.ranges[t]=e,this.init()},t.prototype.removeAllRanges=function(){return this.ranges=[],this.init()},t.prototype.addRange=function(t){var e,n,o,r,i;for(this.ranges.push(t),this.init(),i=[],n=0,o=(r=this.ranges).length;o>n;n++)e=r[n],i.push(e.select());return i},t.prototype.deleteFromDocument=function(){return this.selection.clear()},t.prototype.toString=function(){return this.ranges[0].toString()},t}(),r={convertLineBreaks:function(t){return t.replace(/\r\n/g,"\n")},stripLineBreaks:function(t){return t.replace(/\r\n/g,"")},getText:function(t){return t.innerText||t.nodeValue},findLength:function(t,e,n,o){var i;switch(i=e.duplicate(),t){case"StartToStart":i.setEndPoint("EndToStart",n);break;case"StartToEnd":i.setEndPoint("EndToEnd",n)}return o?r.convertLineBreaks(i.text).length:r.stripLineBreaks(i.text).length},findNodeByPos:function(t,e,n){var o,r;return null==n&&(n=0),(o=function(t,e,n,r){var i,a,s,h,c;for(c=[],a=0,s=(h=t.childNodes).length;s>a;a++)if(i=h[a],!r.found)if(3===i.nodeType){if(r.length+i.length+n>e){r.found=!0,r.el=i,r.offset=e-r.length;break}c.push(r.length+=i.length)}else c.push(o(i,e,n,r));return c})(t,e,n,r={length:0,el:t,offset:0}),r},findPosFromNode:function(t){var e,n,o;return n={pos:0},o=t.parentNode,(e=function(t,n,o){var r,i,a,s,h;for(h=[],i=0,a=(s=t.childNodes).length;a>i;i++)if(r=s[i],!o.found){if(r===n){o.found=!0;break}3===r.nodeType?h.push(o.pos+=r.length):r.hasChildNodes()?h.push(e(r,n,o)):h.push(void 0)}return h})(o,t,n),n.pos}}),"NodeList"in window&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=function(callback,thisArg){thisArg=thisArg||window;for(var i=0;i>>0;if("function"!=typeof predicate)throw new TypeError("predicate must be a function");for(var thisArg=arguments[1],k=0;kthis.length)&&-1!==this.indexOf(search,start)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(searchElement,fromIndex){if(null==this)throw new TypeError('"this" is null or not defined');var o=Object(this),len=o.length>>>0;if(0===len)return!1;var x,y,n=0|fromIndex,k=Math.max(n>=0?n:len-Math.abs(n),0);for(;k0}});else{var document=function(startDoc){for(var doc=window.document,frame=getFrameElement(doc);frame;)frame=getFrameElement(doc=frame.ownerDocument);return doc}(),registry=[],crossOriginUpdater=null,crossOriginRect=null;IntersectionObserver.prototype.THROTTLE_TIMEOUT=100,IntersectionObserver.prototype.POLL_INTERVAL=null,IntersectionObserver.prototype.USE_MUTATION_OBSERVER=!0,IntersectionObserver._setupCrossOriginUpdater=function(){return crossOriginUpdater||(crossOriginUpdater=function(boundingClientRect,intersectionRect){crossOriginRect=boundingClientRect&&intersectionRect?convertFromParentRect(boundingClientRect,intersectionRect):{top:0,bottom:0,left:0,right:0,width:0,height:0},registry.forEach((function(observer){observer._checkForIntersections()}))}),crossOriginUpdater},IntersectionObserver._resetCrossOriginUpdater=function(){crossOriginUpdater=null,crossOriginRect=null},IntersectionObserver.prototype.observe=function(target){if(!this._observationTargets.some((function(item){return item.element==target}))){if(!target||1!=target.nodeType)throw new Error("target must be an Element");this._registerInstance(),this._observationTargets.push({element:target,entry:null}),this._monitorIntersections(target.ownerDocument),this._checkForIntersections()}},IntersectionObserver.prototype.unobserve=function(target){this._observationTargets=this._observationTargets.filter((function(item){return item.element!=target})),this._unmonitorIntersections(target.ownerDocument),0==this._observationTargets.length&&this._unregisterInstance()},IntersectionObserver.prototype.disconnect=function(){this._observationTargets=[],this._unmonitorAllIntersections(),this._unregisterInstance()},IntersectionObserver.prototype.takeRecords=function(){var records=this._queuedEntries.slice();return this._queuedEntries=[],records},IntersectionObserver.prototype._initThresholds=function(opt_threshold){var threshold=opt_threshold||[0];return Array.isArray(threshold)||(threshold=[threshold]),threshold.sort().filter((function(t,i,a){if("number"!=typeof t||isNaN(t)||t<0||t>1)throw new Error("threshold must be a number between 0 and 1 inclusively");return t!==a[i-1]}))},IntersectionObserver.prototype._parseRootMargin=function(opt_rootMargin){var margins=(opt_rootMargin||"0px").split(/\s+/).map((function(margin){var parts=/^(-?\d*\.?\d+)(px|%)$/.exec(margin);if(!parts)throw new Error("rootMargin must be specified in pixels or percent");return{value:parseFloat(parts[1]),unit:parts[2]}}));return margins[1]=margins[1]||margins[0],margins[2]=margins[2]||margins[0],margins[3]=margins[3]||margins[1],margins},IntersectionObserver.prototype._monitorIntersections=function(doc){var win=doc.defaultView;if(win&&-1==this._monitoringDocuments.indexOf(doc)){var callback=this._checkForIntersections,monitoringInterval=null,domObserver=null;this.POLL_INTERVAL?monitoringInterval=win.setInterval(callback,this.POLL_INTERVAL):(addEvent(win,"resize",callback,!0),addEvent(doc,"scroll",callback,!0),this.USE_MUTATION_OBSERVER&&"MutationObserver"in win&&(domObserver=new win.MutationObserver(callback)).observe(doc,{attributes:!0,childList:!0,characterData:!0,subtree:!0})),this._monitoringDocuments.push(doc),this._monitoringUnsubscribes.push((function(){var win=doc.defaultView;win&&(monitoringInterval&&win.clearInterval(monitoringInterval),removeEvent(win,"resize",callback,!0)),removeEvent(doc,"scroll",callback,!0),domObserver&&domObserver.disconnect()}));var rootDoc=this.root&&(this.root.ownerDocument||this.root)||document;if(doc!=rootDoc){var frame=getFrameElement(doc);frame&&this._monitorIntersections(frame.ownerDocument)}}},IntersectionObserver.prototype._unmonitorIntersections=function(doc){var index=this._monitoringDocuments.indexOf(doc);if(-1!=index){var rootDoc=this.root&&(this.root.ownerDocument||this.root)||document;if(!this._observationTargets.some((function(item){var itemDoc=item.element.ownerDocument;if(itemDoc==doc)return!0;for(;itemDoc&&itemDoc!=rootDoc;){var frame=getFrameElement(itemDoc);if((itemDoc=frame&&frame.ownerDocument)==doc)return!0}return!1}))){var unsubscribe=this._monitoringUnsubscribes[index];if(this._monitoringDocuments.splice(index,1),this._monitoringUnsubscribes.splice(index,1),unsubscribe(),doc!=rootDoc){var frame=getFrameElement(doc);frame&&this._unmonitorIntersections(frame.ownerDocument)}}}},IntersectionObserver.prototype._unmonitorAllIntersections=function(){var unsubscribes=this._monitoringUnsubscribes.slice(0);this._monitoringDocuments.length=0,this._monitoringUnsubscribes.length=0;for(var i=0;i=0&&height>=0&&{top,bottom,left,right,width,height}||null),!intersectionRect)break;parent=parent&&getParentNode(parent)}return intersectionRect}},IntersectionObserver.prototype._getRootRect=function(){var rootRect;if(this.root&&!isDoc(this.root))rootRect=getBoundingClientRect(this.root);else{var doc=isDoc(this.root)?this.root:document,html=doc.documentElement,body=doc.body;rootRect={top:0,left:0,right:html.clientWidth||body.clientWidth,width:html.clientWidth||body.clientWidth,bottom:html.clientHeight||body.clientHeight,height:html.clientHeight||body.clientHeight}}return this._expandRectByRootMargin(rootRect)},IntersectionObserver.prototype._expandRectByRootMargin=function(rect){var margins=this._rootMarginValues.map((function(margin,i){return"px"==margin.unit?margin.value:margin.value*(i%2?rect.width:rect.height)/100})),newRect={top:rect.top-margins[0],right:rect.right+margins[1],bottom:rect.bottom+margins[2],left:rect.left-margins[3]};return newRect.width=newRect.right-newRect.left,newRect.height=newRect.bottom-newRect.top,newRect},IntersectionObserver.prototype._hasCrossedThreshold=function(oldEntry,newEntry){var oldRatio=oldEntry&&oldEntry.isIntersecting?oldEntry.intersectionRatio||0:-1,newRatio=newEntry.isIntersecting?newEntry.intersectionRatio||0:-1;if(oldRatio!==newRatio)for(var i=0;i
+
+
+
+
+
+
+
+
+
+
+
Click load file to load some HTML from your file system
+
+
+
+
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/ms-icon-144x144.png b/github-pages-deploy-action-temp-deployment-folder/assets/ms-icon-144x144.png
new file mode 100644
index 0000000..7eaf3a0
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/ms-icon-144x144.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/ms-icon-150x150.png b/github-pages-deploy-action-temp-deployment-folder/assets/ms-icon-150x150.png
new file mode 100644
index 0000000..24bbe64
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/ms-icon-150x150.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/ms-icon-310x310.png b/github-pages-deploy-action-temp-deployment-folder/assets/ms-icon-310x310.png
new file mode 100644
index 0000000..81a35ca
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/ms-icon-310x310.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/ms-icon-70x70.png b/github-pages-deploy-action-temp-deployment-folder/assets/ms-icon-70x70.png
new file mode 100644
index 0000000..2e0f49c
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/ms-icon-70x70.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/pwa-icon.png b/github-pages-deploy-action-temp-deployment-folder/assets/pwa-icon.png
new file mode 100644
index 0000000..1bf9133
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/assets/pwa-icon.png differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/assets/upgrade-browser.html b/github-pages-deploy-action-temp-deployment-folder/assets/upgrade-browser.html
new file mode 100644
index 0000000..637ffb6
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/assets/upgrade-browser.html
@@ -0,0 +1,136 @@
+
+
+
+
+ Modern browser required
+
+
+
+
+
+
Outdated browser detected
+
+
+ This website requires a modern browser to give the best experience possible.
+
+
+ Upgrade your browser to the latest version or download one of these browsers:
+
Web browser: You will need to have the latest version of either Google Chrome, Safari, Firefox, or Microsoft Edge.
\n\n\n\n\n\n
Accounts: In addition to general University account access, you will be required to create an account with InvisionApp.com
\n\n\n\n\n\n
Software installs: You will need to download and install an open-source desktop application called Twine from Twinery.org. It is possible to use a web version of this software if you cannot or wish not to install it on your computer.
Any journal is fine. I recommend the Moleskine Cahier Journal, Large, Squared, Kraft Brown, Soft Cover (5 x 8.25) Amazon purchase link\n\n\n
\n\n\n\n
\n\n\n
\n\n\n\n\n\n
Pens, pencils, markers\n\n
\n
Any that you already own are fine, you do not need to purchase special ones for this course. However, the following recommendations are professional grade if you are so inclined to invest in quality drawing tools.\n\n
\n
Pencil: Palomino Blackwing 602
\n\n\n\n
Pen: Copic Multiliner Marker 0.5 - Black
\n\n\n\n
Marker: Copic N2
\n\n\n\n
\n\n\n
\n\n\n\n
\n\n\n
\n\n\n\n\n\n
Scissors
\n\n\n\n\n\n
Post-it Notes
\n\n\n\n\n\n
Poster board (or large open wall space) for the post-its
+
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/lunrSearchIndex.json b/github-pages-deploy-action-temp-deployment-folder/lunrSearchIndex.json
new file mode 100644
index 0000000..68572b5
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/lunrSearchIndex.json
@@ -0,0 +1 @@
+[{"id":"item534ed4c7-2468-366f-5410-a","title":"HAX development","created":1548826475,"location":"documentation-1/hax-development","description":"Include HAX in your projectThe developers docs will lay out the many specifications that make HAX possible including core concepts, different schema's it leverages ad how to define app store spec in ","text":"hax development quick start if you want to work on individual components inside need link the node_modules folders.\n \n cd haxcms/\n # directory your clone of lrnwebcomponents ln -s ../lrnwebcomponents/node_modules/\n \n\nif see element changes in a haxcms site we setup some sym links directory.\n sites/my-site/\n dist, build, and node_modules\n ../../dist/\n ../../build/\n ../../node_modules/\n \n\n\ninclude project\nthe developers docs will lay out many specifications that make possible including core concepts, different schemas it leverages ad how define app store spec order take integrations further.\n get code\nnpm install --save @lrnwebcomponents/h-a-x\nyarn add @lrnwebcomponents/h-a-x\n\n# reference project\nimport \"@lrnwebcomponents/h-a-x/h-a-x.js\";\n\n# use template with an appstore definition like\n< h-a-x >\n now this paragraph is editable\n \n< / >\n\nuhh, it?\nyeah, that's it. behold power thousand open source suns raining down all their hate editors past complex or ecosystem lock in."},{"id":"item587de126-437b-4864-a3ea-5","title":"HAX11ty","created":1597690877,"location":"item-587de126-437b-4864-a3ea-54078837127c","description":"HAX + 11ty = HAX11ty! HAX11ty gives you the best of SEO from 11ty while using the HAX editor and the HAXcms theme engine for presenting material. This gives you the SPA capabilities of fast loading r","text":"hax + 11ty = hax11ty ! gives you the best of seo from while using editor and haxcms theme engine for presenting material. this spa capabilities fast loading routes in but reload page it loads a physical file high ala 11ty!\ncreate new repository hax11ty\n\nit even has github actions support built in! meaning can check out mini-doc site hax11ty\n which is self-updated when we update docs / repo hax11ty.\nthis video shows\n early work on by michael potter"},{"id":"item36c4fc60-67c0-43c2-8f71-c","title":"Query examples","created":1553349518,"location":"documentation-1/haxcms/theming/core-elements/query-examples","description":" Hold up there. You didn't cover any of the query tags in that last section!Ok ok, here's the deal. Queries are so important that they needed their own section. Calm down Dwight we'll handle that n","text":"hold up there. you didnt cover any of the query tags in that last section! \nok ok, here's deal. queries are so important they needed their own section. calm down dwight we'll handle now. the site-\n\n\n\n elements incredibly powerful aspects haxcms theming deserve section anyway.\nsite-query\n\n\ncode example\n < site-query\nresult=\"{{result}}\"\nconditions='{\"metadata.tag\": \"funny\"}'\n>\n< /site-query>\n\n\n \n\n\nspoken example\n\"give me all the \n give pages who have a tag \"funny\"\n\nwhen it's useful\nalways. this is by far most element our library. it can site structure and effectively return anything, anywhere matches criteria. for exact criteria matching though won't be getting children page x unless specifically requested them.\nthis great things like don't parents (top level items) which exactly how site-top-menu\n\n does conjunction with dom-repeat (in example).\ncaveats\nthis doesn't render anything itself\n\n\nyou to then know do two way template bind (polymer convention looking {{result}} \n\nor use javascript order results visual output\n\nits powerful\n\n\nsite-query-menu-slice\n\n\na menu slice one takes part hierarchy chops out items.\n <\n site-query-menu-slice\n result=\"{{__items}}\"\n dynamic-methodology=\"[[dynamicmethodology]]\"\n start=\"[[start]]\"\n end=\"[[end]]\"\n parent=\"[[parent]]\"\n fixed-id=\"[[fixedid]]\"\n >\n /site-query-menu-slice>\n \n [[item.title]]\n \n\nspoken child pages\nthat 2 4 levels deep.\n\ndelivered results\n what type leveraging again?\n site-query-menu-slice\n\ndynamic leveling\nthe dynamic leveling flag would allow create analyzes current active item (as example). say \"always 2-3 below this\". instance you've got sub-set being returned.\nwhen useful\nthis useful block always shows documentation site.\nsite-render-query\n\n\na attempts standardize practice wiring site-query something visual. requires supply get going has unfortunate limitation must not nature.\nexample\n description: [[item.description]]\n location: [[item.location]]\n changed: [[item.metadata.updated]]\n set as active\n \n\n\n\nwhen useful\nwhen static items want once based on infrastructure yet changing dynamically during view.\npossible usage\nas we haven't rolled into themes at time, could placing \"latest posts\" or \"upcoming events\" block. that's data passed but unchanging loaded. think simple \"views\" construct if from drupal worldview."},{"id":"itemasd7dab5-8208-65e3-c3e4-2","title":"What is HAX","created":1548826475,"location":"welcome/what-is-hax","description":"HAX - Headless Authoring eXperienceHAX is a WYSIWYG unlike any other. You extend your world by extending the web through the web component standard. HAX has a simple schema and integrations to allow","text":"hax - headless authoring experience\nhax is a wysiwyg unlike any other. you extend your world by extending the web through component standard. has simple schema and integrations to allow anyone author that \"widget\" on site.\nthis means developers can fundamentally change way html operates while expressing it in highly semantic tag structure.\nlets understand silly example\n \n \n<meme-maker\n alt=\"mother of god shades gif\"\n image-url=\"https://media2.giphy.com/media/3cb7aom6347pw/giphy.gif\"\n top-text=\"web components\"\n bottom-text=\"it's \"the\" platform\"\n style=\"width: 50%;\">\n</meme-maker>\n\n components\n it's platform\nhow leverages this\nhax this capability express advanced functionality single order build itself. ultimately, made up dozens complex new tags. end though. shows interface like \n. cascades unpacks unique experience.\nhax also doesn't what editing though! hasn't been built say, meme-maker above. edit things\n in very general sense. if custom element / dom object, could theoretically it... knew directions. these directions are emitted from capable elements when editor sets itself up. critical implication this: \nhax be extended how modify just about element!\nthese definitions limited develop more or less creating rules experience\nthe content produced operate anywhere with without after fact\n\n\nwait, say that\nhax effectively organizing page could. let's look at an example page's source. either hit then \"source view\" button see screenshot below\nso was files/lego.jpg\n file uploaded (drag drop place holder area) we selected \"full width\" image type for rendering. then, adding caption panel, insert writes properties into adds editing. save, takes piece converts send backend.\nthe output no trace hax, meaning load definition full-width-image tag, longer require hax. migrates between platforms have access it'll know pick fact (as long as there). \nin way, gets integrated other managing \"body\" blob area makes page. visual assets work used website."},{"id":"item692eb91c-4003-3429-5d9f-c","title":"WCFactory Tooling","created":1548826475,"location":"documentation-1/hax-development/wcfactory-tooling","description":"","text":"we made tooling to publish web components with ease and in any library. its called wcfactory while not required, it's the use for managing hax many related elements our convenience installation script\n\n \n curl -fssl https://raw.githubusercontent.com/elmsln/wcfactory/master/wcfactoryme.sh -o wcfactoryme.sh && sh wcfactoryme.sh\n \n\na factory that churns out components, library agnostic a unified development, testing, build production pipeline. want eliminate barriers component adoption because as of oct 23rd, 89.18% all traffic can handle no polyfills. get it on npm\n or yarn\n publishing!\n $ yarn global add @wcfactory/cli\n\n\nwcfactory github"},{"id":"itemwelcome","title":"Our Mission","created":1548826475,"location":"welcome","description":"We're on a mission to empower the next billion creators to share their voice with the world and in doing so, create a less toxic web. Regardless offfff ability, platform,tribe or income","text":"were on a mission to empower the next billion creators share their voice with world and in doing so, create less toxic web. regardless offfff ability,\n platform,\ntribe\n or income\n.\nwill you help us #haxtheweb\n hax society?\n \n \n# editor stand alone for use apps\nnpm install --save @lrnwebcomponents/h-a-x\nyarn add @lrnwebcomponents/h-a-x\npnpm @lrnwebcomponents/h-a-x\n# or integrate textarea like older wysiwyg editors\nnpm @lrnwebcomponents/wysiwyg-hax\nyarn @lrnwebcomponents/wysiwyg-hax\npnpm @lrnwebcomponents/wysiwyg-hax\nintegrations\n\nnpm\n\nhax + 11ty\nwordpress\n\n / classicpress\n\ndrupal 7,8 9\n\nbackdropcms\n\ngravcms\n\nhaxcms\n\n\n\n \n\nhax works web component based design assets so are never tied hax. this keeps your pure \nand without adding platform lock-in as content produced by is semantic html. want video player above this? then just run this:\n# video-player tag but anywhere of it\nyarn @lrnwebcomponents/video-player\nget involved!\njoin our slack channel\n get involved all things components. an open community people who love across platforms.\nwho's involved\nhax brainchild bryan ollendyke, michael potter, nikki massaro kaufman, charles lavera chorus contributors. we've had contributions from:\narizona state university (drupal 8 plugin)\nthe national archives (ux audit, drupal plugin)\npenn libraries (hax11ty)\npenn eberly college science (core contributor maintainers)\npenn arts architecture contributors maintainers)\n\ncheck out involved\n page additional details."},{"id":"item96d00871-d866-c65e-b7f0-4","title":"apps","created":1548826475,"location":"documentation-1/hax-development/hax-app-store/apps","description":"","text":"a single app definition this is an example of how the flickr\n\n\n\n integration set up in haxtheweb.org. below integrations pieces have been annotated i order to illustrate what each provides hax. for more advanced see complete example\n\n\n\n\n.\n {\n// info about source integration\n\"details\": {\n // title display ui\n \"title\": \"flickr\",\n icon represent it uis\n \"icon\": \"image:collections\",\n optional image present it\n \"image\": \"flickr.jpg\",\n color accent \"color\": \"pink\",\n author (future)\n \"author\": \"yahoo\",\n description \"description\": \"the original photo sharing platform on web.\",\n status \"status\": \"available\",\n rating \"rating\": \"0\",\n tags grouping sources \"tags\": [\"images\", \"creative commons\", \"crowdsourced\"]\n},\n// connection object declares connect service\n\"connection\": \"protocol\": \"https\",\n \"url\": \"api.flickr.com\",\n any additional headers that need added\n \"headers\": \"authorization\": \"bearer potentiallysomebigsignaturehere\"\n },\n data send with api call, usually authorization or querying\n \"data\": \"api_key\": \"somebigkeyhere\"\n supported operations include, browse, read, edit, add, delete\n \"operations\": \"browse\": \"method\": \"get\",\n \"endpoint\": \"services/rest\",\n pagination methodology \"pagination\": \"style\": \"page\",\n \"props\": \"per_page\": \"photos.perpage\",\n \"total_pages\": \"photos.pages\",\n \"page\": \"photos.page\"\n }\n needed search this\n \"search\": json schema key with, label supply and input field type\n \"text\": \"search\",\n \"type\": \"textfield\"\n \"license\": \"license type\",\n \"select\",\n \"options\": \"1\": \"public domain\",\n \"2\": \"cc attribution\",\n \"3\": zero\",\n \"4\": share-alike\"\n requests\n \"flickr.photos.search\",\n \"\",\n \"safe_search\": \"1\",\n \"20\",\n \"format\": \"json\",\n \"nojsoncallback\": \"extras\": \"license,description,url_l,url_s\"\n map information coming across wire\n \"resultmap\": type gizmo match results to\n \"defaultgizmotype\": \"video\",\n location where items are found response\n \"items\": \"resource.items.collection\",\n preview\n \"preview\": \"stuff\",\n \"details\": \"details\",\n \"whatever.jpg\",\n \"id\": \"meta.id\"\n fields they off api\n \"gizmo\": \"source\": \"citation\": \"alt\": \"caption\": \"\"\n reading individual nodes \"read\": \"node/<%= id %>\",\n \"deep-load-refs\": \"node\"\n editing inputs \"edit\": \"put\",\n %>/update\"\n adding / uploading details\n \"add\": \"post\",\n \"node\",\n \"a new item\",\n \"img\": \"this image\"\n delete request \"delete\": \"delete\",\n %>/delete\"\n }\n}"},{"id":"itemf0af8879-a79c-4d1c-afc4-e","title":"CSS vars","created":1553349518,"location":"documentation-1/haxcms/theming/css-vars","description":"CSS can be modified via CSS variables. CSS variables create a happy middle ground between the constraints of Shadow DOM (namely that styles are fully encapsulated) and designers wanting flexibility a","text":"css can be modified via variables . create a happy middle ground between the constraints of shadow dom (namely that styles are fully encapsulated) and designers wanting flexibility control over design. we leverage heavily in our template layer to allow you \"skin\" just about any theme have already.\na note @apply\nunlike normal variables, polymer (the library build on) supports convention for operate bit more like saas mixins. write blocks code @apply --my-variable-blob;\n which will then someone mix apply whatever valid attributes they want at level. see several implemented below (both blocks).\nexample\nthis is an example from haxcms-basic-theme \nwhich forms clean baseline most sites.\n // this haxcms-basic-theme\nsite-top-menu {\n --site-top-menu-bg: #37474f;\n --site-top-menu-link-color: #ffffff;\n --site-top-menu-indicator-color: --site-top-menu-link-active-color: var(\n --haxcms-basic-theme-accent-color\n );\n --site-top-menu-indicator-arrow: 8px;\n}\nsite-children-block --site-children-block-button: color: }\n --site-children-block-button-active: background-color: var(--haxcms-basic-theme-accent-color);\n }\n}\n.left-col min-height: 250px;\n border: 2px solid black;\n white;\n padding: 16px;\n}\nsite-active-title display: inline-flex;\n --site-active-title-heading: font-family: \"montserrat\", \"helvetica\", \"tahoma\", \"geneva\", \"arial\",\n sans-serif;\n font-size: 16px;\n line-height: 32px;\n margin-bottom: 8px;\n text-rendering: optimizelegibility;\n font-weight: 600;\n }\n}"},{"id":"itemdfd62788-ba48-4051-a869-9","title":"Concepts","created":1550643005,"location":"documentation-1/haxcms/concepts","description":"HAXcms seeks to be a microsite generator and manager that doesn't require any command line in order to operate. HAXcms leverages HAX to give a best in class authoring experience while HAXcms seeks to","text":"haxcms seeks to be a microsite generator and manager that doesnt require any command line in order operate . leverages hax give best class authoring experience while eliminate all the barriers then publishing content online.\nsome words phrases worth understanding haxcms\nhaxeditor - editor\nmicrosite an individual site that's been created by user\noutline sites are outline, we use json outline schema manage this\ntheme single web component based theme agnostic of content\nelements / components design assets work anywhere"},{"id":"iteme3dafe1a-1f50-1834-68f3-9","title":"Add Content","created":1548826475,"location":"documentation-1/ux-concepts/add","description":"Add Content is how you create and add complex blocks to the HAX page editor. These blocks can be variable based on what you chose to include (see appstore) but ultimately are just adding web compon","text":"add content  is how you create and complex blocks to the hax page editor. these can be variable based on what chose include (see appstore\n) but ultimately are just adding web components editable area of page. then tell surface an editing interface which writes properties, attributes, slots element in"},{"id":"item275a0928-60ab-b7ce-c2b6-d","title":"Core concepts","created":1548826475,"location":"documentation-1/core-concepts","description":"","text":"a gizmo is an advanced piece of media or interactivity placed on the page. at technical level, it web component, but to your users and content readers its functionality helping them complete task. maybe they want embed article from wikipedia, create gorgeous, responsive video. how would do that without code knowledge? gizmo's ensure have consistent visual presentation authoring experience across myriad complex functionality. any component can be wired support hax.\nan app adds remote data capabilities hax. search youtube leaving editing experience? hax apps are way that. show up for under find\n\n\n menu while we provide definitions talking commonly used apis, modified connect almost anything."},{"id":"item39074718-758f-d51b-1dc5-1","title":"hello-world element","created":1548826475,"location":"documentation-1/hax-development/hello-world-element","description":"Let's see what goes into the element called @lrnwebcomponents/example-hax-element in order to learn how we can wire anything up to HAXeditor.@lrnwebcomponents/example-hax-element/example-hax-elem","text":"lets see what goes into the element called @lrnwebcomponents/example-hax-element \n \nin order to learn how we can wire anything up haxeditor.\n@lrnwebcomponents/example-hax-element/example-hax-element.js\n \n// import reference haxwiring use in your element\nimport { } from \"@lrnwebcomponents/hax-body-behaviors/lib/haxwiring.js\";\n// connectedcallback is a life cycle hook web component specification\n// tie it so that when this appended dom\n// tell hax exists\nconnectedcallback() {\n// establish wiring\nthis.haxwiring = new haxwiring();\n// call setup which will ensure hax-store ready\nthis.haxwiring.setup(\n {\n canscale: true,\n canposition: caneditsource: false,\n gizmo: title: \"example hax-element\",\n description:\n \"provide an example pick apart of working element\",\n icon: \"icons:android\",\n color: \"green\",\n groups: [\"hax\"],\n handles: [\n type: \"todo:read-the-docs-for-usage\"\n }\n ],\n meta: author: \"you\",\n owner: \"your company\"\n },\n settings: quick: [],\n configure: property: \"title\",\n description: \"\",\n inputmethod: \"textfield\",\n required: \"icons:android\"\n \"available\",\n \"boolean\",\n advanced: []\n 'example-hax-element',\n this\n );\n}"},{"id":"item650eaa59-478c-4674-8ef3-9","title":"HAXcms","created":1563972322,"location":"welcome/why-haxcms-1","description":"HAXcms powers this website and is a hybrid static site generator, a new class of CMS. It's hybrid in that everything is written to static like a static site generator and it's 100% decoupled via web ","text":"haxcms powers this website and is a hybrid static site generator, new class of cms. its in that everything written to like generator it's 100% decoupled via web components.\n\n\n\nfeatures\nmicro-site manager, so manage multiple sites from single install\neach powered by files which live version control\nevery change executed the front end hax / outline tools\nevery automatically tracked control (zip folder send it friend it'll work)\nthe \"database\" site.json file lives with site\nall operations write every as if you editing html hand (but didn't... did)\nability serve up on cdns (this gh pages + cdn) publishing makes purely copy service worker whole jazz for offline installable capability (0 config)\nbuild your own themes custom dev or use one our baked ones\n\nit flat ui contextually loads based should see it. weird, we know, that's also why have trouble describing what is. cms without tooling required. sustainable way building maintaining \"cms\" has pages, can handle fields, themes, but yet doesn't require infrastructure keep running beyond php node beaker browser act back edit files.\nit's an organic living permanent website. hacking limitations content authoring capabilities. say, we're web.\ncore principles\nsupport all platforms devices (cms, app, etc)\nempower authors code ever looking at code\nall produced must work haxeditor available\nsupport older markup, regardless structure, best can\nhax will learn rules producing elements, won't dictate them\ndecentralize things, empower peoples\n\ncross platform\nbecause we've adopted component\n\n standard development both (authoring system) (content management), create compile open tooling\n can support about 98.4% traffic globally server side rendering. employs progressive enhancement methodology meaning hit browsing content.\nthis means latest greatest not constantly worry library changing! dawn age components now, join revolution!\nplatform support\nevergreen\n browsers\n (93+% traffic) - no polyfills!\n\nie 11 edge \nsee f.a.q.\n more detailed break out stats\n\nno lock-in\nthe elements make be delivered cdn installed locally. functionality tied browser\n\n and not\n\n to platform itself (huh?). well, think complex any you've built used. then add site. now move (in mind) another server. migrated maintain functioning isn't actually content?\nfor example, take quiz:"},{"id":"item5a6e6643-3834-4ac5-ae70-0","title":"Installation","created":1550643005,"location":"documentation-1/haxcms/installation","description":"Generic PHP install directionsHave PHP? well then you can setup HAXcms pretty quick. Just download HAXcms and navigate to its directory in a browser. It'll attempt to automatically install (which is ","text":"generic php install directions have php? well then you can setup haxcms pretty quick. just download and navigate to its directory in a browser. itll attempt automatically (which is create two basic folders). if all goes you'll see some ascii art telling what your password is. seeks be 0 config installation so anything didn't work or make sense, drop us line the issue queues.\n\nquick start installation\nnote: this installs ddev docker on linux / mac users possible needed. for windows \n\tyou will need desktop \n\t( \n\t\thttps://docs.docker.com/docker-for-windows/install/\n\t) one of following ddev, lando, docksal as well.\n\n\n \n curl -fssl https://raw.githubusercontent.com/elmsln/haxcms/master/scripts/haxcmsme.sh -o haxcmsme.sh && sh haxcmsme.sh\n \n\n\nor from command line...\njust run haxing web no time! step through prompts scripted via arguments) feed backend it needs few configuration files uses load.\n # hax answer prompts\nbash scripts/haxtheweb.sh\n\na note bash\n\n\n\n\nif you're having issues installing bash script, ensure are version 4.x. os flavors at 3.x which won't work.\n\n\n\n\nmamp\nmamp\n\n\n\n\n\n\n allows pc rapidly working webdev stack their machine. here's steps take using (or similar site hosting).\ndownload latest copy github\n\n\n\n and place mamp/htdocs \n\neither root level (as copying into htdocs shown image below) by placing folder (in case where mamp already installed want keep things tidy).\n\nopen hit servers button\n\n\n\n\n\nclick my website page get started\n\n\n\n\nnow build organically off mamp!\nddev lando vagrant\nwe recommend container manager like ddev\n\n\n\n\n\n\n, though based above basically we're downloading running going. we support methods pick with most often.\n\nclone repo: git clone https://github.com/elmsln/haxcms.git\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ninstall docker\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ninstall ddev\n\n\n\n\n\n\n\n docksal\n\n\n\n\n\n\n\n lando\n\n\n\n\n\n\n\n vagrant\n\n\n\n\n\n\n\n (we 'em all!)\n\n\n\n\n\n\n\n\nopen terminal window, go type start\n\n\n\n\n\n\n\n (for ddev) fin init\n\n\n\n\n\n\n\n docksal) magic\n\n\n\n\n\n\n\n lando) vagrant up\n\n\n\n\n\n\n\n vagrant)\n\n\n\n\n\n\n\n\ngo link any them give browser\n\n\n\n\n\n\n\n\nusername/password admin\n\n\n\n\n\n\n\n/admin\n\n\n\n\n\n\n\n building out static sites locally that push up anywhere!\n\n\n\n\n\n\n\n\nclick icon top right running!\n\n\n\n\n\n\n\n\n\napache gotchas\nif an existing server might apache configurations would cause gate\n cms matter). sure local overrides allowed something following:\n\n /etc/apache2/apache2.conf\n\n<directory var/www/haxlocation>\n\toptions indexes followsymlinks\n\tallowoverride all\n\trequire granted\n</directory>"},{"id":"itema91393ea-31f8-30bd-888f-2","title":"blox","created":1548826475,"location":"documentation-1/hax-development/hax-app-store/blox","description":"","text":"blox are the internal name of what a normal wysiwyg would call layouts. layouts menu lists / grid-plate tags that you can populate. theres no other way to generate layout plate in hax ensure decent defaults produced. schema below will definition seen above.\n {\n\"blox\": [ {\n // details for displaying this visually ui\n \"details\": \"title\": \"33 66 columns\",\n \"author\": \"elms:ln\",\n \"icon\": \"hax:4/8\",\n \"status\": \"available\",\n \"layout\": \"4/8\"\n },\n piece which is series element definitions as an array\n \"blox\": [\n \"tag\": \"place-holder\",\n \"properties\": \"slot\": \"col-2\",\n \"type\": \"text\"\n \"content\": \"\"\n \"col-1\",\n \"image\"\n }\n}]\n},"},{"id":"item504d6323-873d-49e3-9de0-f","title":"Get Involved!","created":1553197584,"location":"get-involved-1","description":"Join our communityJoin us on the HAXTheWeb Slack channelJoin us for HAXcamp Un-code every Friday 3 pm - 5 pm (EST)Follow / use the #HAXTheWeb hash tagJoin our projectsHAXcms - That which ","text":"join our community us on the haxtheweb slack\n channel\njoin for haxcamp un-code\n every friday 3 pm - 5 (est)\nfollow / use the #haxtheweb hash tag\n\n\njoin projects\nhaxcms\n that which powers this website\nunbundled-webcomponents\n a methodology for building and deploying web components to cdns we in all projects\nweb monorepo\n - editing experience (and other tags matter)\nwcfactory\n build maintain your own component library, why should be special.\ncheck out integrations page\n platform specific repos\n\norganization wants get involved?\ngreat! heres some of best ways organizations try \"hax\" involved project.\nreach any members core project team slack\n. we're happy do conference calls forge partnerships especially around hax or oer production solution though it has implications public site!\ntry haxcms live demo\n (reset hourly)\nreach issue queue\n with questions\nbring website developers organization code junkies tell them explore\nhost camp\n (ask more details)\n\nhax makes up multiple projects across hundreds various repos. can bit overwhelming but want you imagine something... being developer hax.\n\n step 'ight up\n \n urz te next contrib\nbecause takes is, that's right, showing repos getting involved! yes too just as meme-able are!\nall things are powered by people like you, wanting make better, accessible, easier use, less painful develop for... place.help reality could have snoop dawg escorting over brand new car*\nanything is possible haxtheweb. only limit...is yourself\n.\n*claims vs may vary. help we'll see where goes.."},{"id":"itemac67dab5-8208-65e3-c3e4-2","title":"Integrations","created":1548826475,"location":"integrations-1","description":"HAX provides plenty of ways to integrate into the platforms you already use! Here are some of the plugins and integrations below this heading.Some things a liittle bit crazyCode Pen?!Demonstration","text":"hax provides plenty of ways to integrate into the platforms you already use! here are some plugins and integrations below this heading. things a liittle bit crazy\ncode pen\n?!\ndemonstration autoloading any web component\n in codepen from cdn\nhax bookmarklet\n (allows injecting website, see for details)\nweb-component-izer\n - inject clip parts sites (good exploring component ecosystem we ride on)\nelectron apps once ours reaches maturity youll know!"},{"id":"item3859b3ac-1ef5-45b4-909c-3","title":"Skin a site","created":1553354507,"location":"documentation-1/haxcms/theming/skin-a-site","description":"Theme skinning is the easiest way to build a decent looking theme in HAXcms. This method is geared toward people that know CSS and HTML but can't get into the weeds of web components or javascript.Wo","text":"theme skinning is the easiest way to build a decent looking in haxcms. this method geared toward people that know css and html but cant get into weeds of web components or javascript. workflow\nmake new site haxcms ui\n\nselect \"custom theme\" as your theme\nin file system go _sites/mynewsite\n/theme\nedit theme.html modify structure\nedit theme.css design\n\nthis skin liking. it's able ship work cdns minimal barrier entry for those used seeing files they can touch see change. it requires no tooling utilize either!"},{"id":"itemeca7c8a4-393a-4e68-8cb4-4","title":"Block settings","created":1597689709,"location":"item-eca7c8a4-393a-4e68-8cb4-440e94683738","description":"Block settings will change contextually based on which block has been selected in the editable area of the page. In this screenshot, a paragraph has been selected and so the icon associated with it is","text":"block settings will change contextually based on which has been selected in the editable area of page. this screenshot, a paragraph and so icon associated with it is shown as well name element. if we meme or other tag wed see contextual what that html element tells hax should be editing interface. normal tag\nmeme tag\nnotice now additional fields when changed are reflected page instantly!"},{"id":"item44a138ea-5122-4a2b-b2ce-8","title":"Structure","created":1550643005,"location":"documentation-1/haxcms/structure","description":"By design we've got a very simple structure. The goal of HAXcms isn't to lock you into anything and so we've simplified our file structure over other solutions.The key directories / files include:fi","text":"by design weve got a very simple structure. the goal of haxcms isn't to lock you into anything and so we've simplified our file structure over other solutions. key directories / files include:\nfiles - any you've uploaded through hax interface\n\npages folders named their content uri that have index.html in it, no then what created when hitting save\nsite.json json outline schema object defines pages your site relationship each other\nindex.html front page pwa stitch it all together\nservice-worker.js makes pwa, need edi this\n\nscreen grab microsite"},{"id":"itemf1c8e3a4-eddb-806a-8a3a-2","title":"HAX schema","created":1548826475,"location":"documentation-1/hax-development/hax-schema","description":"Implementing HAXSchemaIn order for your element to talk to the HAX editor, you need to implement static get haxProperties() on your element. This callback either returns a String based location of ","text":"implementing haxschema in order for your element to talk the hax editor, you need implement static get haxproperties()\n on element. this callback either returns a string\n based location of where lives or json blob directly. appstore documentation page also describes how can integrate without defining directly element.\nexample definition via file reference\n\nexample element\n\nexample specification\n\n\nunderstanding haxschema\nhaxschema is name our standard expressing way communicate with and web component. this broken into two major groupings settings some basic boolean\n.\n \n// item be scaled ui, will it have slider % width\ncanscale: true,\n// position left center justified\ncanposition: edit raw source (future)\ncaneditsource: false\n\nafter these booleans we \"gizmo\" section. gizmo what internal code base were calling custom as represented interfaces like make\n area. reason so that word isn't everywhere else would too confusing. should reference interfaces.\na detailed example below comments\n \ngizmo: {\n// title display\ntitle: \"example hax-element\",\n// description\ndescription:\n \"provide an pick apart working element\",\n// icon represent selection displays\nicon: \"icons:android\",\n// color tint when displays\ncolor: \"green\",\n// grouping data filtering displays (future)\ngroups: [\"hax\"],\n// handlers allow stitch together sources information gizmos render information\n// example: youtube supplies value points url video\n// if user picks video from youtube, things match\n// 'video' type then match any 1 additional field\n// presented case presents video-player qr code\n// default implementations tags.\n// because source, which key source\n// handles block => property insert into\n// array objects map multiple types\n// reserved anything long as\n// looking something matching \"type\"\nhandles: [\n{\n // present\n type: \"video\",\n coming app right\n source: \"source\",\n pulls off api sticks caption field element\n title: \"caption\",\n fallback matches\n caption: description: ability pull across though rare api\n color: \"primarycolor\"\n}\n],\n// metadata wish ship along\nmeta: {\n author: \"you\",\n owner: \"your company\"\n}\n},\nsettings wiring up hax\nsettings forms capable elements are grouped three different areas. quick \nsettings segment of schema provides edit, singular properties ui icons. present select (see screenshot).\n \n \n\n \nsettings: {\nquick: [\n property: \"accentcolor\",\n \"accent color\",\n \"select accent player.\",\n inputmethod: \"colorpicker\",\n icon: \"editor:format-color-fill\"\n },\n attribute: \"dark\",\n \"dark theme\",\n \"enable dark theme \"boolean\",\n \"invert-colors\"\n }\n],\nconfigure block\nthe configure section shows moving manager\nafter hitting settings, you'll see manager open defaulted display.\n \nconfigure: \"the video.\",\n \"textfield\",\n \"link\",\n required: true,\n validationtype: \"url\"\n},\n{\n \"track\",\n \"closed captions\",\n captions file.\",\n \"thumbnailsrc\",\n \"thumbnail image\",\n \"optional. thumbnail/poster image.\",\n \"mediatitle\",\n \"title\",\n \"simple under video\",\n \"av:video-label\",\n false,\n \"text\"\n},\n{\n \"editor:format-color-fill\"\n},\n{\n \"invert-colors\"\n}\n],\nadvanced advanced configuration selects advanced\n \nadvanced: \"darktranscript\",\n transcript\",\n transcript.\",\n \"boolean\"\n},\n{\n \"hidetimestamps\",\n \"hide timestamps\",\n time stamps \"preload\",\n \"preload source(s).\",\n description:\n \"how preloaded, i.e. auto, (default), none.\",\n \"select\",\n options: preload: all media\",\n metadata: media only\",\n none: \"don't preload anything\"\n }\n},\n{\n \"stickycorner\",\n \"sticky corner\",\n \"set corner plays scrolled out range, choose none disable sticky \"none\",\n \"top-left\": \"top-left\",\n \"top-right\": \"top-right\",\n \"bottom-left\": \"bottom-left\",\n \"bottom-right\": \"bottom-right\"\n \"sources\",\n \"other sources\",\n \"list other \"array\",\n properties: \"src\",\n \"textfield\"\n \"type\",\n \"media data\",\n \"audio/aac\": \"acc audio\",\n \"audio/flac\": \"flac \"audio/mp3\": \"mp3 \"video/mp4\": \"mp4 \"video/mov\": \"mov \"audio/ogg\": \"ogg \"video/ogg\": \"audio/wav\": \"wav \"audio/webm\": \"webm \"video/webm\": video\"\n }\n ]\n},\n{\n \"tracks\",\n \"track list\",\n \"tracks languages closed \"kind\",\n \"kind track\",\n subtitles:\n \"subtitles\" /*,\n future features\n 'description': 'description',\n 'thumbnails': 'thumbnails',\n 'interactive': 'interactive',\n 'annotation': 'annotation'*/\n \"label\",\n 'the human-readable track, eg. \"english subtitles\"',\n \"source \"srclang\",\n title:\n 'two letter, language code, \\'en\\' english, \"de\" german, \"es\" spanish, etc.',\n ]\n}\n]\n}"},{"id":"item29e7d7f5-db3e-3ef0-733a-e","title":"Solutions","created":1548826475,"location":"welcome/solutions","description":"Modularity is key to HAX success. Here are some of the solutions that HAX provides which leverage the HAXeditor interface.HAX editorHAX or HAXeditor is the editor of the future you're using in this ","text":"modularity is key to hax success. here are some of the solutions that provides which leverage haxeditor interface. editor\nhax or editor future youre using in this site! it's all editing capabilities you've come for with and core solution other projects based on here. most common way via one many integrations. check out the integrations\n page find works best you\nhaxcms\nhaxcms slimmest possible content management system thanks awesome power hax. haxcms boils creation down a handful files behind scenes, highly readable small.\nhaxcms by loading single \"site.json\" file contains relationships between pages your site. those stored html files, used as manipulate. cms then acts simple server technology basically update two making easy publishing.\nhaxcms has publishing baked github pages. read documentation\n section get deeper. this website you're viewing powered edit controls bottom right would site if were live implementation (this demo'ing capabilities).\nhow fits into organization\nhax (and haxcms) trying lead you education's \"roku remote\" moment. i mean, world where have very little box (haxcms) can be controlled completely uniform, manner (hax) actually pulls together universe media from across organization. helps bridge knowledge gap creators publishers. it eliminates work involved (that none us want do anyway)!\n\nhaxiam\nhaxiam (hax-i-am\n ) saas platform code base that's deploy multiple people. an abstraction enables users point deployment.\nhaxiam leverages hooks built allow integration enterprise login providers, perfect fit organizations looking provide their micro-site publishing.\nit's still early but haxiam github\n ."},{"id":"item17449951-7504-468a-b315-4","title":"Web components","created":1553349518,"location":"documentation-1/haxcms/theming/web-components","description":"Do you know full on web component development? Well, you can build a new theme from scratch. The best way to learn is by picking a part some of our examples. For this we'll analyze the haxcms-slide-th","text":"do you know full on web component development? well, can build a new theme from scratch. the best way to learn is by picking part some of our examples. for this well analyze haxcms-slide-theme \n.\nimport classes / components\n import { html, polymerelement } \"@polymer/polymer/polymer-element.js\";\nimport haxcmstheme \"@lrnwebcomponents/haxcms-elements/lib/core/haxcmsthemewiring.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-title.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-print-button.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/active-item/site-active-title.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-dot-indicator\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-menu-button.js\";\nimport \"@polymer/paper-icon-button/paper-icon-button.js\";\nimport \"@polymer/iron-icons/iron-icons.js\";\nimport \"@polymer/paper-tooltip/paper-tooltip.js\";\nimport \"@lrnwebcomponents/simple-colors/simple-colors.js\";\nimport \"@lrnwebcomponents/hax-body/lib/hax-shared-styles.js\";\n\nas see imports few basic components helpful in development most themes. first we and mix-in wiring library. provides basis any custom element into state management haxcms, typically without having deal with concepts state!\nmix-ins\n class haxcmsslidetheme extends haxcmstheme(polymerelement) {\n\nnext get statement. note how wraps class, thereby giving us mix two together.\nhaxcmstheme class\nyou more about what digging haxcmsthemewiring.js\n\n class. bridges haxcms store (written mobx) design layer. leverage anything writing polymer convention referencing data bound variable template.\nhere's variables you'll commonly see\n\n themes, direct an example dom bind that would look like template\n [[sitetitle]]\n[[ancestortitle\n[[parenttitle]]\n[[activetitle]]\n\n [[activeitemfields.images.0.url]]\n\n\nthat last line with activeitemfields raw power under hood approach. use create field definitions (in haxschema\n\n) then extend capabilities your pages.\nrequired css\nthere one small required block css when doing haxcms. it following:\n /**\n * hide slotted content during edit mode. must be here work.\n */\n:host([edit-mode]) #slot {\n display: none;\n}\n\nthis helps ensure user clicks button they haxeditor as opposed body are currently working with. hit save, sends backend which updates front end changes. ensures isn't visible editing.\nrequired html\n \n \n\n\nrelated css, following html appear template somewhere (or case simple-blog\n, leveraged theme). make whatever want beyond but correctly target integrated using mix-in. there ways position reposition dynamically will not covered seen simple-blog\n.\nfrom there, away. write js want! themes referenced docs all provide blue prints different leveraging system.\nnext we'll discuss core elements order even cleaner!"},{"id":"item5a9ea17e-63ce-96f3-e94f-d","title":"WordPress","created":1549428503,"location":"integrations-1/wordpress","description":"We support WordPress too! In order to use HAX though you'll want to replace the Gutenberg editor. The following steps will help you get it up and running.Get the Classic Editor. This plugin helps re","text":"we support wordpress too! in order to use hax though youll want replace the gutenberg editor. following steps will help you get it up and running. classic editor\n. this plugin helps restore back what wanted\nget the hax plugin\n, unzip rename hax\nbreak free of platform specific assets content"},{"id":"itemdb25d465-f8ee-6d9b-a738-f","title":"Documentation","created":1548826475,"location":"documentation-1","description":"HAX may seem complex, but it's built on a series of standards that will never break. As a result of the complexity of these standards, there are things you should know prior to digging into HAXedit","text":"hax may seem complex, but its built on a series of standards that will never\n\n break. as result the complexity these standards, there are things you should know prior to digging into haxeditor core or any related solutions\n\nstorybook / styles element listing\nwant get started with using our various elements? then check out robust design storybook\n full elements, examples, and api details.\n\n \n\nmany members development team participate in show called camp uncode\n.\nblogging social\nhere's some social media blogs follow for additional writing, tutorials videos about hax.\nbtopro\n, nikkimk\n, haxtheweb\n, haxcamp\n twitter accounts\nyoutube channel\n\ndev.to blog"},{"id":"itemfaaa1198-10c7-ff30-ece6-0","title":"stax","created":1548826475,"location":"documentation-1/hax-development/hax-app-store/stax","description":"Stax are what most WYSIWYG systems would call Templates. Stax in HAX are a series of HAX element schema's in succession.Below is a definition for the \"example lesson\" seen above. This is a larger ex","text":"stax are what most wysiwyg systems would call templates. in hax a series of element schemas succession. \nbelow is definition for the \"example lesson\" seen above. this larger example, templates will probably only be few items. stack template like blox / layout except pieces do not have to move as group and they can deleted. it's more shortcut generating details area describes visually ui while subsequent stax\n\n\n property an array schemas.\n \"stax\": [\n{\n\"details\": {\n\"title\": lesson\",\n\"image\": \"\",\n\"author\": \"elms:ln\",\n\"description\": \"an example do\",\n\"status\": \"available\",\n\"rating\": \"0\",\n\"tags\": [\n\"example\"\n]\n},\n\"stax\": [\n{\n\"tag\": \"h2\",\n\"properties\": {},\n\"content\": \"introduction elms: learning network\"\n},\n{\n\"tag\": \"p\",\n\"properties\": \"what network? how it fundamentally different from other technologies? why your reading when text that you've just added see make really solid introduction new unit instruction? let's keep find out!\"\n},\n{\n\"tag\": \"video-player\",\n\"properties\": {\n\"style\": \"width: 75%; margin: 0px auto; display: block;\",\n\"source\": \"https://www.youtube.com/watch?v=pklpq4ufo64\",\n\"src\": \"https://www.youtube-nocookie.com/embed/pklpq4ufo64?showinfo=0&controls=1&rel=0\",\n\"iframed\": true,\n\"sandboxed\": false,\n\"width\": \"560\",\n\"height\": \"315\",\n\"responsive\": true,\n\"caption\": elms:ln? any educational technology that's ever existed? sustainable innovation? so ...\",\n\"secondarycolor\": \"#fff9c4\",\n\"textcolor\": \"#000000\",\n\"secondarycolorclass\": \"yellow lighten-4\",\n\"textcolorclass\": \"black-text\",\n\"ytnocookie\": true,\n\"ytsuggested\": false,\n\"ytcontrols\": true,\n\"yttitle\": false,\n\"vimeotitle\": false,\n\"vimeobyline\": false,\n\"vimeoportrait\": false,\n\"videocolor\": \"ff031d\",\n\"resource\": \"#86bfd28d-8b57-a3b9-b2e5\",\n\"prefix\": \"oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org \"\n},\n\"content\": \"\"\n},\n{\n\"tag\": \"h3\",\n\"properties\": \"pretest\"\n},\n{\n\"tag\": \"self-check\",\n\"properties\": 50%; float: right;\",\n\"title\": \"self-check\",\n\"image\": \"https://farm1.staticflickr.com/642/21641107852_3602f9c1a8_b.jpg\",\n\"alt\": \"a stickers associated with elms:ln shown presented on back laptop.\",\n\"correct\": false,\n\"textcolor\": \"#000000\",\n\"textcolorclass\": \"black-text\",\n\"backgroundcolor\": \"#b2dfdb\",\n\"backgroundcolorclass\": \"teal lighten-4\",\n\"resource\": \"#08d09967-a7c9-3d02-8935\",\n\"prefix\": \" true or false. traditional management system.\\n\\n network considered next generation digital environment.\\nlearn about ngdle blog post educause\\n.\\n\\n\"\n},\n{\n\"tag\": \"if you think already know elms:ln, out ahead time! take self-check right if system something more\"\n},\n{\n\"tag\": \"hr\",\n\"properties\": 75%;\"\n},\n\"content\": \"history review\"\n},\n{\n\"tag\": \"now we've read (and not). kind illustrate flexibility authoring platform.\"\n},\n{\n\"tag\": \"multiple-choice\",\n\"properties\": block;\",\n\"checklabel\": \"check guess\",\n\"resetlabel\": \"clear\",\n\"hidetitle\": true,\n\"question\": \"who founded platform?\",\n\"answers\": [\n{\n\"correct\": true,\n\"label\": \"bryan ollendyke\"\n},\n{\n\"correct\": false,\n\"label\": \"mythic elves\"\n},\n{\n\"correct\": \"michael potter\"\n},\n{\n\"correct\": \"nikki massaro kauffman\"\n},\n{\n\"correct\": \"charles lavera\"\n}\n],\n\"correcttext\": \"great job!\",\n\"incorrecttext\": \"try again\",\n\"randomize\": true,\n\"typeof\": \"oer:assessment\",\n\"resource\": \"#97ffed48-c928-39ae-1bea\",\n\"prefix\": block;\",\n\"title\": \"elms development team\",\n\"checklabel\": \"clear answers\",\n\"hidetitle\": false,\n\"question\": responsible existing? who improves wants best solution transform education world?\",\n\"answers\": lavera\"\n},\n{\n\"correct\": \"anyone, open community developed by multiple organizations!\"\n}\n],\n\"displayedanswers\": organizations!\"\n}\n],\n\"correcttext\": job! got our trick question!\",\n\"incorrecttext\": again, there's some answers...\",\n\"randomize\": \"#59426af4-ecf2-f49d-06a6\",\n\"prefix\": \"\"\n}\n]\n}\n]\n}"},{"id":"item251f207e-4046-a4b0-40ce-7","title":"Search","created":1548826475,"location":"documentation-1/ux-concepts/find","description":"Search is a data interoperability layer to HAX where web components data binding shines. Search is able to stitch remote data together with local web components in order to streamline workflows. You ","text":"search is a data interoperability layer to hax where web components binding shines. able stitch remote together with local in order streamline workflows. you can any source directly context and then drag drop or click the item question add it page your building instantly."},{"id":"item06233713-d866-3351-81da-8","title":"UX concepts","created":1548826475,"location":"documentation-1/ux-concepts","description":"The HAX UI can be broken down into three major production concepts. Content authors are either:Adding something they already haveEditing the Settings of the activated element on the pageSearch for ","text":"the hax ui can be broken down into three major production concepts. content authors are either: adding something they already have\nediting settings of activated element on page\nsearch for media from remote sources\nadd in a template or predefined layout page"},{"id":"item0e4cc53c-944f-658a-5440-e","title":"Related technologies","created":1548826475,"location":"documentation-1/related-technologies","description":"","text":"there are several technologies you should learn about if your going to understand how hax is built (and extend it) json schema\nlearn more schema\n\n\n\n on the official website for that standard. schema provides a way of describing data contained in blob so form can be modify those values. uses this extensively via tag called eco-json-schema-object\n\n\n\n and related tags, turn any definition into fully two-way binded form.\nexample\n // from https://www.tutorialspoint.com/json/json_schema.htm\n{\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"product\",\n \"description\": \"a product acmes catalog\",\n \"type\": \"object\",\n\t\n \"properties\": {\n\t\n \"id\": {\n \"the unique identifier product\",\n \"integer\"\n },\n\t\t\n \"name\": \"name \"string\"\n \"price\": \"number\",\n \"minimum\": 0,\n \"exclusiveminimum\": true\n }\n },\n\t\n \"required\": [\"id\", \"name\", \"price\"]\n}\n\nhax schema\n\n\n\n\n an abstraction sits top order provide forms updating values wired elements. wanted types input fields has access then learning would best place start!\njson outline schema\n\n\njson schema\n standard expressing storing relation between objects. it gives simple linking together concepts / entities. here example entity:\n \"unique-id-of-the-item-1\",\n \"indent\": \"1\",\n \"location\": \"name-of-some-file-or-location.html\",\n \"order\": \"0\",\n \"parent\": \"unique-id-of-the-parent\",\n some file or location\",\n \"metadata\": {}\n}\n\nthis enough visually represent information form. let's look at larger 3 items which express nested hierarchy consistent way:\n \"123-ddc-d321d-d2e-dd2\",\n \"my outline\",\n \"author\": \"lrnwebcomponents\",\n series material teach structure content.\",\n \"license\": \"by-sa\",\n {},\n \"items\": [\n \"item-1\",\n \"outline.html\",\n null,\n \"outline\",\n description glance item potentially\",\n \"icon\": \"icons:view-quilt\"\n },\n \"item-2\",\n \"2\",\n \"introduction.html\",\n \"introduction outlines\",\n {}\n \"item-3\",\n \"files/a-2nd-page-item.html\",\n \"an ]\n}\n\nlet's break down these properties why we have them schema:\nhigher schema\n`title\n` - name work as whole\n`author\n` who created work\n`description\n` short explain it\n`license\n` valid license hard whole\n`metadata\n` area additional details work. no but could used relating needed.\n`id\n` universe all works\n`items\n` array elements contain pages leaves outline\n\nleaf page element within structure\n`id\n` uuid id element\n`indent\n` far position inward. something parent only indented 2 levels\n`location\n` resource references display here\n`order\n` weighting relative other match level\n`parent\n` child of\n`title\n` title display\n`description\n` it\n`metadata\n` container need ship."},{"id":"itema839d5c1-3321-a395-c032-4","title":"autoloader","created":1548826475,"location":"documentation-1/hax-development/hax-app-store/autoloader","description":"Autoloader is waaayyy easier to implement then the other parts of the appstore spec and is probably the most important as it loads all the elements that will be available to your users. All it is is a","text":"autoloader is waaayyy easier to implement then the other parts of appstore spec and probably most important as it loads all elements that will be available your users. an array or object references hax should forcibly load definitions once its done bootstrapping. here's a basic example with steps what does this information \n definition\n finishes bootstrap ready use\n loops through each element following:\n attempts dynamically import definition element\n creates instance (virtually) looks for static get haxproperties\n if exists valid haxschema you can leverage in hax!\n \n\nspec details\nthere are few different ways declare schema. here simple three common forms we'll explain each.\n\n \"autoloader\": {\n \"meme-maker\": \"@lrnwebcomponents/meme-maker/meme-maker.js\",\n \"another-tag\": \"import\": \"some-other-location/bare-import-name/whatever.js\"\n },\n \"vaadin-upload\": \"@vaadin/vaadin-upload/vaadin-upload.js\",\n \"haxproperties\": \"canscale\": false,\n \"canposition\": \"caneditsource\": true,\n \"gizmo\": \"title\": \"vaadin upload button\",\n \"icon\": \"upload\",\n \"color\": \"orange\",\n \"groups\": [\"upload\", \"community\"],\n \"meta\": \"author\": elements\"\n }\n \"settings\": \"configure\": [\n \"property\": \"label\",\n \"description\": \"label \"inputmethod\": \"textfield\"\n ]\n \"saveoptions\": \"wipeslot\": true\n }\n}\n\ndefinition from file\nthe method simply \"tag-name\": \"location-of-tag.js\"\n. you'll see importing anything that's been published with\n \n haxproperties\n. also use add own / built have their haxproperties.\n\ndefinition import\nthis basically just enable future support defining capabilities at run time. could used issue but not actually (so \"whatever\": { \"\"}\n ). because possibly logistics cms application charge when\n gets imported.\n\ndefinition + schema\nthis powerful verbose. allows potentially someone else's not\n haxschema\n defined, define yourself on fly! means community supply wiring talk based mental model. up hax, performance benefit building design library including class element."},{"id":"itemaa589faa-e860-4221-82fa-d","title":"Templates and Layouts","created":1597689709,"location":"item-aa589faa-e860-4221-82fa-df6d57328ac2","description":"Templates and layouts allow you to drop in pre-built pieces of content structure. This might be a series of images or an example of content that could be written.","text":"templates and layouts allow you to drop in pre-built pieces of content structure. this might be a series images or an example that could written."},{"id":"itema84c35ec-85c8-4c7c-b4ab-8","title":"Core elements","created":1552437937,"location":"documentation-1/haxcms/theming/core-elements","description":"While you're not required to use them, HAXcms supplies a series of elements that can make theme development effortless. You can see the source of these in greater detail under the theme directory of h","text":"while youre not required to use them, haxcms supplies a series of elements that can make theme development effortless. you see the source these in greater detail under directory haxcms-elements \n\n. this is brief overview what they are and provide your interface.\nhaxcms seeks apply sds pattern, technique we made up just for sentence, dramatic effect\n. as everyone knows who about read next heading, stands for:\nso. damn. semantic.\nwhew, i need an ice cold drink wash away semantic sweats.\nyes, that's right, allows complex state managed system without needing understand management... like... at all.\n\"but management it's important me\"\nthat's awesome, four people on twitter, but most designers want design! don't or intricacies making collapsed field area expand relative item has been dictated active store*.\n*an intentionally confusing worded sentence\n\n\n\nwe mobx do our management if something care some themes directly implement interface with layer. simple blog's footer element\n\n\n great example why pita.\n\n\nback jerk\nok fine, here are. here's list es module imports get them\n {\n \"dependencies\": \"@lrnwebcomponents/haxcms-elements\": \"latest\"\n }\n}\n\n import \"@lrnwebcomponents/haxcms-elements/lib/ui-components/active-item/site-active-title.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/blocks/site-children-block.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/blocks/site-outline-block.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/layout/site-footer.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/layout/site-modal.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-breadcrumb.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-dot-indicator.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-menu-button.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-menu.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-top-menu.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/query/site-query-menu-slice.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/query/site-query.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/query/site-render-query.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-print-button.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-rss-button.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-title.js\";\n\nnow each them (pretty self explanatory because #sds)\nsite-active-title - \nthe title wrapped h1 tag\n\nsite-children-block\n all child menu items based criteria match\nsite-outline-block\n part outline match\nsite-footer\n basic license element site details\nsite-modal\n modal button house other elements\nsite-breadcrumb\n\n breadcrumb trail item\nsite-dot-indicator\n links line dots\nsite-menu-button\n buttons navigating through menu. next, previous, parent first kinds options.\n\n\nsite-menu\n\n visualization hierarchy site, complete checkmarks given per page user goes (optional) well lot styling options highlighted bar scrolls into view small screens. fantastic one line.\nsite-top-menu\n top level indicator focus\nsite-print-button\n print support 4 levels printing site\nsite-rss-button\n displays link (opened new window) rss feed 2.0 atom 1.0 format (also applies correct values bots discover)\nsite-title\n homepage tag\n\n\n\nsee themselves more details api examples check out leverage heavily across core themes.\na word style\nwe css variables style bits inside custom elements. so if like styling, look available away. \"learn 2 theme\"\n\n\n implementing multiple against always know, go back reread section\n."},{"id":"item49d727fb-b5c8-871a-3979-a","title":"F.A.Q.","created":1548826475,"location":"f-a-q-1","description":"Are web components ready for prime time?Yes. Web components effectively turn the HTML of a site into a consistent API. HAXeditor leverages this approach and standardizes its usage in order to ","text":"are web components ready for prime time?\nyes. effectively turn the html of a site into consistent api. haxeditor\n leverages this approach and standardizes its usage in order to supply an incredible amount functionality browser. we do what vast majority cms provide prior interfacing with server. just files h-a-x\n\n tag understand how modify content.\nwhats browser support like?\nweb components\n can be compiled ie11 work all major browsers natively\nhaxeditor\n supports all browsers, though mostly test \"evergreen\" browsers.\nhaxcms\n support is broad but bit fragmented optimize experience per each device. from lowest highest quality (numbers based on global traffic data aggregate\n, last updated aug 2020\n)\nie (11) / safari (9.1) older - no js frame site\n (~ 1.8%) es5 fallback text\nedge (18 below) watered down ui\n .7%) es5\nedge + chromium 2020 will move it bottom\n\n\nfirefox 48-67 10.x (~1%) es5\nevergreen modern 96.5%) native es6!\n\n\n\ndo i have use elements haxeditor supplies?\nno. hax written such that the appstore specification\n defining available other demos. leveraging autoloader\n piece spec, you tell which tags load. component definitions schema kept separate as desired (useful editorial workflows permissions scenarios).\ndo these require operate?\nno! modifies inside itself then exports back html. means long your definitions, longer required render them!\nhax effectively writing same could by hand. help make semantic also ensure lives \"the platform\"; case, platform being so scope page, element unpack correctly or otherwise.\nhow does compare wordpress gutenberg plugin?\nin terms mission they attempt provide, click build website tonight, no-or-minimal-code solution masses... same. both seek reduce barriers entry expression. takes some critical differences philosophy design technical implementation goals open web.\nhax seeks improve publishing systems, haxcms otherwise. (which constructed in) tiny fraction want empower anyone self privacy, sovereignty, individuality peoples web. eliminate production, integration delivery material internet; it, not expensive part it. hax-the-web, hence domain name.\nsome larger points different highlighted below\nhax independent touches, agnostic. highly focused needs improving content authoring users.\ngutenberg embeds blocks layer nuance operations wildly block. example, tabbed list items may \"add another\" button inline believes editing across complex must delivered haxeditor, block level. illustrates ux users selecting way would any element. feel term adoption end-users training through lack cognitive load increase element.\ngutenberg sees \"add\" things primary construction method. if need upload media that's separately integrated process, dependent deliver. boils creation mental model author. authors either say \"i add\n something\" (add menu), find\n (find make\n (make create layout\n (blox layout menu) remix something template\n (stax template menu).\nthe system produces react specific logistics wordpress. produced out capable systems\n. believe extending broader capabilities first second duplication efforts globally improves resource sharing.\ngutenberg react, requiring plugins react. mix \"vanillajs\", litelement polymerelement elements. compatible library\n\n produce hax. while limited to, here popular examples natively talk hax:\nvanillajs following the web specification\npolymerelement\n\nlitelement\n\nskatejs\n\nslim.js\n\nsvelte\n\nvuejs\n (web wrapper)\nangular (compiled custom elements)\nany library passes testing custom-elements-everywhere\n should work\n\n\nwhere did come from?\nhax brain child elms:ln team at pennsylvania state university\n. originally created power elms:ln\n instructional innovations was quickly realized potential transform publishing.\nthe original core development evangelist infancy (an idea conceived 2016, experimented 2017, manifested 2018, actualized 2019):\nbryan ollendyke (@btopro\n) project lead developer\nmichael potter (@hey__mp\n) developer\nnikki massaro-kauffman (@nikkimk\n) - core developer\ncharles lavera (@cgldevel\n) collins (@_mike_collins\n) end user testing, assessment\nkatrina wehr (@katrinamwehr\n) assessment\nmelissa hicks (@juststormy\n) assessment, champion\n\nthere nothing can't together. us better together!\nex uno plures"},{"id":"itemca8c6ba8-c012-8ace-343a-3","title":"Drupal","created":1548826475,"location":"integrations-1/drupal","description":"Try on SimplyTest.meTry HAX on Simplytest me in a few steps without needing to install anythingGo to Simplytest me and pick HAX modulePick 9.x,8.x or 7.xLog in, go to Administration -> Configurat","text":"try on simplytest.me hax simplytest me in a few steps without needing to install anything\ngo and pick module\n\npick 9.x,8.x or 7.x\nlog in, go administration -> configuration content authoring input formats / filters\nmake sure that filter html tags is disabled\n\n\n\n \n cdn all the things\n\n garland...\n\ngetting setup drupal cms\nhax works with 8, 7 way back 6 (mostly prove point). while routines are largely same make you follow directions for your flavor of if it has any branching steps. 8 easiest get require some additional modules going.\ngo project page drupal.org\n\n\nbe aware 9 version does not\n\n web components module does\n\n\ndownload platform found readme.md\n\ndrupal have these files the copythisstuff\n folder module\n so that!\n\n\nenable module\n\nweb too 7\n\n\n\ngo node site, should see tab says \"block editor mode\"\n\nenjoy haxing site!\n\n\nspecial note 7\nin order upload capabilities you'll need download file entity\n\n restws\n\n as well. we've created \"hax common\" feature using features which will help dependencies common sites hax."},{"id":"item01e0f49a-190a-4c8d-ae0e-8","title":"Roadmap","created":1565290387,"location":"welcome/roadmap-1","description":"HAX encompasses many different projectsThis roadmap illustrates all the projects related to HAX and ELMS:LN, which HAX comes from. The little settings gears found throughout illustrate enhancements a","text":"hax encompasses many different projects this roadmap illustrates all the related to and elms:ln, which comes from. little settings gears found throughout illustrate enhancements next steps for in our wheel house.\nas you can see, theres a lot of planned haxeditor haxcms with additional future capabilities elms:ln as result these projects. it's important understand relationships through how innovations flow between them.\nrelationships major pieces\nhax has parts detailed here, so let's look at relationship pieces before getting into roadmap. are part organization is also included details.\nhaxiam, haxcms, three that make up \"hax\" name space, benefit from being built on web components. haxiam server technology while mix front end assets. fully front-end code then requires backend save load pages from.\nbelow an image consolidating information site arrows illustrating innovation. components always building blocks, usually bubbling need either or haxeditor. there, influences improves haxcms. copy inside it sees improvements both platforms. just makes sure copies generated.\nnow foundation dig project roadmaps."},{"id":"item5df45272-f6b9-4f4f-b650-1","title":"Publishing","created":1550643005,"location":"documentation-1/haxcms/publishing","description":"HAXcms requires being published in order to be visible to other people. Working locally or on Desktop or on a server, is akin to you writing a document on your computer. It's not shared with anyone. W","text":"haxcms requires being published in order to be visible other people. working locally or on desktop a server, is akin you writing document your computer. its not shared with anyone. we recommend setup publishing ahead of time save hassle later. setting up publishing\nfrom the site listing\n page, click settings gear top right corner.\nnext you'll see modal that has options for plugging github credentials. don't password and this aspect optional. if do enter password, one api call made behalf from container which will an ssh key pair. allows all future requests publish happen automatically behalf. stored. want set part up, can plug rest git settings, save, then manually files after using ui (see last heading page).\nnpublishing sites / new sites\nwhen share people update website, hitting button inside how this. bottom get started.\ncurrently only provider supported local installation method (or ddev providers). have additional development flexibility.\nunderstanding what's actually happening\n\nwhen hit publish, few things make \"web ready\". general those operations:\nhaxcms takes underlying commits them version control (though they already should be)\n\n\nit pushes these origin repository (likely github)\n\nthen it switches branch from. github, gh-pages\n\n branch, but deviate as needed.\n\nnext deletes symlinks replaces correct references needed leverages \"cdn provider\" specified when super charge end users.\n\nit uses twig\n\n step through correctly rewrite index.html match paths where it's going sent\n\nthen adds sends gh-pages branch.\n\nit does some file clean sets back master next go work everything\n\n\nwhen done, link indicated successful (meaning pushed there). depending host content may take minutes change, though usually within about 2 minutes.\nonce so passed, refresh live address type url site. you've been there previously, probably same theme were there. 5 seconds, message pop indicating \"new available\" clicking refreshing browser) give updated content.\nthis happens because called \"service worker\". enables 100% offline capable ensures traffic data absolutely necessary.\na note non workflows\nyou might to) credentials between repo. that's ok. terminal gui run following site:\n cd haxcms/_sites/yoursite\ngit checkout gh-pages\ngit push master\ngit master\n\nhaxcms sure branches are valid distribution, even wasn't able send their destination."},{"id":"item44cc230b-07db-442a-90cf-6","title":"haxHooks","created":1617802345,"location":"item-44cc230b-07db-442a-90cf-687e2d089a5d","description":"Elements can integrate deeply into HAX state management using what we call \"hax hooks\". By supplying a method on your web component like haxHooks() you are magically able to tap into different li","text":"elements can integrate deeply into hax state management using what we call \"hax hooks\". by supplying a method on your web component like haxhooks()\n you are magically able to tap different life-cycle steps within the editor.\n\nbecause of simplicity and power \n haxhooks\n this may not be an exhaustive list internal code documentation should consulted\n (or open issue ensure document missing hook!). you search lrnwebcomponents monorepo for usage haxhooks\n in order discover additional implementations beyond is pointed below.\n\n blog posts about topic\n\n\n haxhooks(): how supply their own editing experience in now!\n haxhooks: webcomponents that ship ux\n \n\n\ncode example\n\n basic example which each strings youd then implement as async\n callbacks. / await\n allows safely defer element do whatever it wants dom structure callback, without disrupting activation or conversion schema, uses virtualize body sanitation\n  purposes at time save adding new things page.\n \n\n \nhaxhooks() {\n return activeelementchanged: \"haxactiveelementchanged\",\n editmodechanged : \"haxeditmodechanged\",\n inlinecontextmenu: \"haxinlinecontextmenu\",\n gizmoregistration: \"haxgizmoregistration\",\n preprocessnodetocontent \"haxpreprocessnodetocontent\",\n postprocessnodetocontent \"haxpostprocessnodetocontent\",\n progressiveenhancement: \"haxprogressiveenhancement\",\n preprocessinsertcontent \"haxpreprocessinsertcontent\"\n };\n}\n\n gizmoregistration(store)\n\nthe most powerful hook haxhooks. fires whenever read via appstore it's definition loaded use. supplies instance haxstore (written mobx). use object want hax. while seemingly too powerful, here some examples past leverage super good\n\n code-sample\n - code-sample tag inject shortcut logic. if supplied, ```js\n will convert js based code-sample. also hijacks baked support ```\n instead default code\n tag\n \"apps\" wikipedia-query\n github-preview\n supply custom public api endpoints being loaded. way \"media\" menu github wikipedia just including these tags autoloader block appstore.\n translatable haxproperties meme-maker\n twitter-embed\n translations haxproperties. means were edit editor spanish (es), would see fields inputs (es) opposed english (en) text supplied static get haxproperties()\n method.\n \n\n\n activeelementchanged(element, value)\n\nthis runs user activates selects modify node active well (true) inactive (false). used functional aspects prior receiving use-case could preventing behavior clickable link (see: \n ebook-button\n). another possible making pieces shadowroot\n contenteditable\n, only activated (see: meme-maker\n).\n\n\n editmodechanged(value)\n\nthis all nodes hax-body\n when itself changes. now editing, value true\n, go no longer false\n.\n\n inlinecontextmenu(cemenu)\nthis after allow buttons operations in-context hovers above elements. have access (hax-ce-context) add with multiple-choice\n this. quick removing potential answers quickly.\n\n preprocessnodetocontent(node)\nthis right before converted content entire hax-body. happens has triggered event converting from real html saved returned backend. any known data clean up html. taking complex property innerhtml children progressive enhancement purposes.\nprogressiveenhancement(element)\nthis string appended area element. alternative accomplish during but work response. seo purposes.\n\n postprocessnodetocontent(content)\nthis progressiveenhancement hax-save event. been content. useful forcible regex'ing output specific words leak output. video-player\n ensuring there empty arrays required field.\n\n preprocessinsertcontent(detail)\nthis schema element, our virtual node, inserted modification that's node. answer doesn't bleed through page. duplication inserting selecting block."},{"id":"itemc86470aa-0295-4c9d-9f17-4","title":"Presentations","created":1552910817,"location":"welcome/presentations","description":"This is the youtube playlist of all things HAXTheWebThis playlist is updated on a regular basis so make sure to subscribe to the youtube channel for updates. There's also many other playlists relat","text":"this is the youtube playlist of all things haxtheweb\n\nthis updated on a regular basis so make sure to subscribe channel for updates. theres also many other playlists related elms:ln, wcfactory, haxcms and web components in general."},{"id":"item4824986b-1897-568d-fdd9-4","title":"BackdropCMS","created":1548826475,"location":"integrations-1/backdropcms","description":"Getting HAX setup in BackdropCMSSearch for HAX on BackdropCMS.org or from within your Backdrop siteFollow the instructions in the Web components module README for buildingDon't worry, HAX requ","text":"getting hax setup in backdropcms\nsearch for on backdropcms.org\n or from within your backdrop site\nfollow the instructions web components module readme\n for building\ndont worry, requires but comes with files that supply details to install hax\n\nenable and modules\ngo a node site, you should see tab says \"hax mode\"\nenjoy haxing backdropcms site"},{"id":"item7ab2e2fd-622f-4a0f-9967-5","title":"Scavenger Hunt","created":1563970537,"location":"scavenger-hunt-1","description":"Become part of our dynasty franchise **by wearing a cool jerseyWe're building the greatest roster of people ever to HAX the complacency of our industry. Take the HAX scavenger hunt at the next ev","text":"become part of our dynasty franchise **by wearing a cool jersey \n\n\n\nwere building the greatest roster people ever to hax complacency industry. take scavenger hunt at next event join movement!\npast winners rocking their merch from completing hunt!\n@onelittlebecca\n\n\n\n - drupalgovcon '19\n\n\n\n@jproffitt\n\n\n\n '19\n\n\n@natefollmer\n\n\n irl aug '19"},{"id":"item7f3dd690-4c3f-4616-baa5-1","title":"Dev workflows","created":1553349518,"location":"documentation-1/haxcms/theming/dev-workflows","description":"Our development workflow is as follows (for themes)All custom theme work happens in your _config directoryMake my-theme.js, pull everything together, either in this directory or in a wcfactory cat","text":"our development workflow is as follows (for themes) all custom theme work happens in your _config directory\n\nmake my-theme.js, pull everything together, either this directory or a wcfactory\n catalog of elements youve made\nreference you _config/my-custom-elements.js element\nupdate the _config/config.json block that says themes\n to include something like...\n\n \"themes\": {\n \"odl-haxtheme\": \"element\": \"odl-haxtheme\",\n \"path\": \"@myorganization/odl-haxtheme/odl-haxtheme.js\",\n \"name\": \"eberly odl\"\n }\n },\n\nthis tells haxcms ui can now select the (but don't yet, it won't be valid)\nlocal during development\nwe use polymer cli to serve up and on web components locally while have to, it's recommended part wcfactory workflow.\nmake new site ui\n\ngo _sites/mynewsite run polymer --npm --open --entrypoint dist/dev.html\n\n\nadjust url opens only ip address with no path after it\nyou'll see open for local work, which will leveraging any assets referenced node_modules at project root.\nto add / install run yarn (or npm) @what/ever-you-want --save \n, just like would other fe dev\nedit site's site.json manually update point location actively working on\ndevelop away until liking\n\nshipping theme\nto ship theme, you'll need do build routine\nimportant note\nthis currently forks from original source core (because recompile assets). if you're ok cool, know we're trying find ways around involving rollup\n.\ngo root\n\nrun build\n\n\ncopy go site\ndelete symlink replace directory\nnow publish via so long not leverage cdn\n\nthe future\nadmittedly, full component rough. hard maintain built copy modular system without tooling. future we plan having tooling workflows directly into allow streamline creation themes.\ncurrent limitations\nyou can't existing cdns (like webcomponents.psu.edu whatever else out there) are pegged project's source. creating then creates effect want ensure some place host order power site."},{"id":"iteme6daa06e-dfd2-43a4-ade8-0","title":"Life cycle","created":1554496047,"location":"documentation-1/haxcms/life-cycle","description":"This is a general life cycle that happens when HAXcms \"boots up\". When web components are unpacking the contents of what to do it generally will work this way.page load, should it be no-js or a web c","text":"this is a general life cycle that happens when haxcms \"boots up\". web components are unpacking the contents of what to do it generally will work way. page load, should be no-js or component delivered, preflight\nhaxcms-site-builder loads site.json, reads json outline schema and starts bootstrap into theme, items, title, etc\nappends haxcms-editor-builder tag which checks for \"context\"\ncontext established based on global values php, nodejs, beaker, etc\nuses login end point check if theres jwt in user's local data\nwhen finds backend, injects bridge backend\n\nhaxeditor gets injected correct place theme then all unpacks does its thing\n\nevent driven architecture\nhaxcms allows jumping at different core operational steps reacting these changes an event design pattern. means \"fires\" much like javascript code written react can make operation.\nhere example from haxiam implements custom configuration listeners\n// file included has class question\ninclude_once str_replace('_iamconfig/haxcmsconfig.php', '', __file__) . '/system/lib/iam.php';\n// haxcmsconfig.php\n// adds listener haxcms-jwt-get event\n// says pass data question $iam->getjwtuser();\n$haxcms->addeventlistener('haxcms-jwt-get', array($iam, 'getjwtuser'));\n// later additionally code\nclass iam {\n/**\n * callback event: haxcms-jwt-get\n */\n public function getjwtuser(&$token) {\n ($this->enterprise->uservar) $token['user'] = $this->enterprise->uservar;\n }\n }\n}\n// ensures there $iam object\n// also there's instance so our above\n// fires it'll correctly associate code\nglobal $iam;\n$iam new iam();\ncore listeners\ncore listeners influence how constructed. you add your _config/config.php file\nhaxcms-init\n - just after bootstraps initial configuration\nhaxcms-site-metadata\n constructing metadata block top document\nhaxcms-connection-settings\n authorized users, points connecting modifying logic as far where flows.\n\nenterprise integrations sso\nthe following hooks allow supplanting (intentionally) simplistic system. organization. many these\n need specific examples.\nhaxcms-login-test\n didn't built checks. useful enterprise other sso methods access\nhaxcms-validate-user\n same login-test except validate every transaction ensure user name matches decoding jwt\nhaxcms-jwt-get\n we ask jwt. supply token manually via methodology than one\nhaxcms-refresh-token-get\n connection deemed needing refresh, supplies refresh looks"},{"id":"item4bce3546-4d53-4456-8eae-4","title":"HAXcms","created":1550643005,"location":"documentation-1/haxcms","description":"HAXcms, that which powers the site you are currently reading is a powerful \"static site generator\" paradigm. It leverages server technology in order to orchestrate a static site. That way the \"server\"","text":"haxcms, that which powers the site you are currently reading is a powerful \"static generator\" paradigm. it leverages server technology in order to orchestrate static site. way \"server\" only used when needed for user securely develop their content. difference from past generators\nunlike solutions like jekyll\n\n, haxcms anyone publish website, not just those understand command line. intended be installed and then allow users entirely use ui create, manage micro-sites.\nvisualization"},{"id":"itemcdd303d0-4490-4433-94fa-0","title":"Internationalization - i18n","created":1617805490,"location":"item-cdd303d0-4490-4433-94fa-0e78cf849e80","description":"We've created a way to internationalize ANY web component you create. Because this is a complex topic, and we seek to empower anyone, anywhere to work with web components; i18n is a critical piece of ","text":"weve created a way to internationalize any web component you create. because this is complex topic, and we seek empower anyone, anywhere work with components; i18n critical piece of accessibility improving knowledge access on the web. doing so without requiring framework driven approach, or even knowing how our element will be used in production, complicated series decisions. blog details these decisions\ni18nmixin\n\n \n install mixin via yarn npm: add @lrnwebcomponents/i18n-manager\n create folder your called /locales\n file my-element.es.json for spanish translation element. japanese would my-element.ja.json example.\n \n\n import { i18nmixin } from \"@lrnwebcomponents/i18n-manager/lib/i18nmixin.js\";\nclass myelement extends i18nmixin(htmlelement) {\n constructor() this.t = stuff: \"stuff\"\n };\n this.registerlocalization({\n context: this,\n basepath: import.meta.url,\n locales: [\"es\", \"ja\"],\n });\n connectedcallback() this.render();\n }\n render() this.innerhtml `${this.t.stuff}`;\n }\n}\n\nthis invokes dependency manager which might not want have if do similar approach but dependencies, just feed custom event manager. you'll still use convention translatable text, here's can invoke needed\n\n window.dispatchevent(\n new customevent(\"i18n-manager-register-element\", detail: namespace: \"my-element.haxproperties\",\n localespath: decodeuricomponent(import.meta.url) + \"/../locales\",\n [\"es\"],\n },\n })\n );\n\nusing vanilla need /locales directory same naming convention. simplifies integration bit as well timing what it's initiated registration method within that's going arrive hax/haxcms property make that isn't using hax at all."},{"id":"item52727dcf-a7d5-90e9-c459-a","title":"HAX Element Schema","created":1548826475,"location":"documentation-1/hax-development/hax-element-schema","description":"","text":"example of hax element schema json object. its a pretty simple abstraction html elements that helps with packaging and sanitization. h2 tag (core html)\n {\n\"tag\": \"h2\",\n\"properties\": {},\n\"content\": \"introduction to elms: learning network\"\n}\n\np \"p\",\n\"properties\": \"what is network? how it fundamentally different from other technologies? why your reading this when it's text you've just added see make really solid introduction new unit instruction? let's keep find out!\"\n}\n\nvideo-player (web component)\n \"video-player\",\n\"properties\": {\n\"style\": \"width: 75%; margin: 0px auto; display: block;\",\n\"source\": \"https://www.youtube.com/watch?v=pklpq4ufo64\",\n\"src\": \"https://www.youtube-nocookie.com/embed/pklpq4ufo64?showinfo=0&controls=1&rel=0\",\n\"iframed\": true,\n\"sandboxed\": false,\n\"width\": \"560\",\n\"height\": \"315\",\n\"responsive\": true,\n\"caption\": elms:ln? any educational technology that's ever existed? what sustainable innovation? so ...\",\n\"secondarycolor\": \"#fff9c4\",\n\"textcolor\": \"#000000\",\n\"secondarycolorclass\": \"yellow lighten-4\",\n\"textcolorclass\": \"black-text\",\n\"ytnocookie\": true,\n\"ytsuggested\": false,\n\"ytcontrols\": true,\n\"yttitle\": false,\n\"vimeotitle\": false,\n\"vimeobyline\": false,\n\"vimeoportrait\": false,\n\"videocolor\": \"ff031d\",\n\"resource\": \"#86bfd28d-8b57-a3b9-b2e5\",\n\"prefix\": \"oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org \"\n},\n\"content\": \"\"\n}"},{"id":"item5dede24a-2de7-4fae-a00b-3","title":"I have issues","created":1553556295,"location":"welcome/i-have-issues","description":"You have a problem or would like to contribute to anything in our universe? That's awesome! All issues, feature requests and general thumbs up should happen in our issue queue on github: https://gith","text":"you have a problem or would like to contribute anything in our universe? thats awesome! all issues, feature requests and general thumbs up should happen issue queue on github: https://github.com/elmsln/issues/issues"},{"id":"item677468f6-7bff-4bb6-bd2a-1","title":"ClassicPress","created":1565279009,"location":"integrations-1/classicpress-1","description":"ClassicPress is a popular fork of WordPress that's even easier to get HAX up and running then it is in the original!Get the HAX plugin from the wordpress registryGo to edit / create a page/post ","text":"classicpress is a popular fork of wordpress thats even easier to get hax up and running then it in the original!\n\nget plugin\n from registry\ngo edit / create page/post you are haxing\n\ninstallation video\nthis shows installing manually if can't from store!"},{"id":"itemc7500902-9aed-4117-8949-a","title":"Troubleshooting","created":1553555764,"location":"documentation-1/haxcms/troubleshooting","description":"These are some common issues / resolutions in HAXcms related to installation, publishing, etc.I installed HAXcms and forgot my passwordYour username and password can be found in _config/config.php o","text":"these are some common issues / resolutions in haxcms related to installation, publishing, etc. i installed and forgot my password\nyour username password can be found _config/config.php on the server (assuming local development)\ni clicked login nothing happened now im locked out.\nclear your browser cache. a cookie is set that might invalid.\n\nopen new try again\n\ni publish happened\npublishing take up minute or so at times since it's creating commit, rewriting files then front end waiting push github before it triggers successful response.\nif did fail publish, you not have git setup. click gear icon dashboard (site listing) ensure you've setup integration correctly.\n\nrealize everything just file our json outline schema very easy read. if there's an issue with something check _sites/mysite/site.json for _config/config.json. all settings variables cascade this way. stored globally, replicated locally allow them pealed off more easily imported exported into other setups."},{"id":"item4de60a5f-98ab-a602-edfc-0","title":"HAX app store","created":1548826475,"location":"documentation-1/hax-development/hax-app-store","description":"","text":"the app store specification is what provides hax with its raw data integration capabilities. it's a block of json that tells haxeditor rules by which it to play by. complete example available in h-a-x tag's demo \n\n\n\n but we'll outline different parts this supports as well one detail.\nkeys and they mean\n\napps\n\n\n\n - source either upload or search. apps supply definition how connect remote data, search it, things it.\n\n\nblox\n\n\n\n elements. blox are series elements wrapped inside plate element. can be modified pieces fundamentally entire thing piece. moved up down an group.\n\n\nstax\n\n\n\n stack html added into dom all at once. think these like a \n\n\nautoloader\n\n\n\n automatically loaded when setup."},{"id":"item897a9839-4ca3-a336-4795-a","title":"GravCMS","created":1548826475,"location":"integrations-1/gravcms","description":"There's two plugins needed to run HAX on GravCMS - The web components and HAX plugins.Web components plugin - provides the build routine and installation instructionsHAX plugin - editor capab","text":"theres two plugins needed to run hax on gravcms - the web components and plugins. plugin\n\n - provides build routine installation instructions\n\nhax editor capabilities\n\n\nenable these then will show up when you go edit / add a page. beware there can be conflicts between markdown parsing capabilities of grav so may need disable parser pages that use hax."},{"id":"itema52fb685-0a2f-4bc0-8e62-4","title":"Theming","created":1550643005,"location":"documentation-1/haxcms/theming","description":"There are multiple ways to \"theme\" in HAXcms that align with the skillsets of the person doing the theme development. Know web components? Cool. Know basic CSS and HTML? Cool. Want to build something ","text":"there are multiple ways to \"theme\" in haxcms that align with the skillsets of person doing theme development. know web components? cool. basic css and html? want build something complete from ground up? go for it. weve got a robust templating engine unleash your creativity. we've also written wcfactory\n\n\n\n\n tooling order improve development management component libraries at scale (see lrnwebcomponents\n\n\n\n\n our element portfolio). this isn't required but if you fancy yourself \"modern front end developer\" might be you.\nwatch video\nthese some deep dives into layer. they great seeing what's possible, how we about making new themes. now store state works internally try always keep away designers.\n\n\n\n\n\n\nhere's source code learn-two-theme\n\n\n\n (which viewing currently) as an initial example what looks like.\n /**\n * copyright 2019 pennsylvania university\n @license apache-2.0, see license.md full text.\n */\nimport { html, polymerelement } \"@polymer/polymer/polymer-element.js\";\nimport haxcmstheme \"@lrnwebcomponents/haxcms-elements/lib/core/haxcmsthemewiring.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-breadcrumb.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/active-item/site-active-title.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-title.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-rss-button.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-print-button.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-menu.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-menu-button.js\";\nimport \"@lrnwebcomponents/simple-colors/simple-colors.js\";\nimport \"@polymer/app-layout/app-drawer/app-drawer.js\";\nimport \"@polymer/app-layout/app-drawer-layout/app-drawer-layout.js\";\nimport \"@polymer/paper-icon-button/paper-icon-button.js\";\n\n/**\n `learn-two-theme`\n `learn2 haxcms`\n *\n @microcopy - language worth noting:\n -\n @customelement\n @polymer\n @demo demo/index.html\n */\nclass learntwotheme extends haxcmstheme(polymerelement) {\n // render function\n static get template() return html`\n <style>\n :host display: block;\n font-family: \"muli\", \"helvetica\", \"tahoma\", \"geneva\", \"arial\",\n sans-serif;\n letter-spacing: -0.03rem;\n font-weight: 400;\n background: #fafafa;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 \"montserrat\", text-rendering: optimizelegibility;\n line-height: 150%;\n 0;\n :host([hidden]) none;\n :host([edit-mode]) #slot #contentcontainer padding: 48px 96px;\n .header #747474;\n color: text-align: center;\n 0rem 1rem 2rem 1rem;\n site-active-title --site-active-title-heading: font-size: 52px;\n -3px;\n 78px;\n margin-bottom: 27.2px;\n margin-top: 13.6px;\n 100;\n site-title position: relative;\n overflow: hidden;\n --site-title-link: inline-block;\n text-decoration: --site-title-heading: 28px;\n margin: site-menu background-color: #383f45;\n #ffffff;\n scroll;\n max-height: calc(100vh 200px);\n --site-menu-active-color: --site-menu: --site-menu-container: #2d3237;\n --site-menu-item-active-item: site-menu::-webkit-scrollbar-track -webkit-box-shadow: inset 0 4px rgba(56, 63, 69, 0.9);\n border-radius: site-menu::-webkit-scrollbar width: 2px;\n site-menu::-webkit-scrollbar-thumb 1px;\n app-drawer-layout min-height: 100vh;\n -moz-available;\n -webkit-fill-available;\n fill-available;\n --app-drawer-width: 300px;\n --app-drawer-scrim-background: rgba(80, 80, 0.8);\n --app-drawer-content-container: .rss-buttons justify-content: space-evenly;\n flex;\n site-print-button --site-print-button-button: white;\n app-drawer box-shadow: 6px -3px var(--haxcms-color, black);\n app-drawer-layout[narrow] 16px;\n #menubutton,\n #menubutton2 #menubutton absolute;\n z-index: 1;\n site-menu-button fixed;\n top: bottom: left: --site-menu-button-icon: 64px;\n height: --site-menu-button-button: rgba(0, 0, 0);\n transition: 0.4s all ease-in-out;\n transition-delay: 0.2s;\n opacity: 0.8;\n -webkit-transition: -moz-transition: -ms-transition: -o-transition: site-menu-button:not([disabled]):hover,\n site-menu-button:not([disabled]):active,\n site-menu-button:not([disabled]):focus 0.1);\n 160px);\n unset;\n transparent !important;\n site-menu-button[type=\"next\"] right: site-menu-button[type=\"prev\"] :host([opened]) site-menu-button[type=\"prev\"],\n :host([opened])\n app-drawer-layout[narrow]\n </style>\n \n html,\n body <style></style>\n `;\n }\n\n properties available custom data binding\n properties() {};\n tag name make it easier obtain directly.\n @notice function must here operate correctly\n */\n tag() \"learn-two-theme\";\n mix opened status\n let props = super.properties;\n props.opened type: boolean,\n reflecttoattribute: true\n };\n props;\n toggledrawer(e) this.$.drawer.toggle();\n }\n}\nwindow.customelements.define(learntwotheme.tag, learntwotheme);\nexport };"},{"id":"itemc5e61b84-e88a-5a48-29c6-5","title":"Creating new ones!","created":1548828434,"location":"integrations-1/creating-new-ones","description":"The main piece to our integrations is wrapped up in something we call \"The magic script\". The magic script is a standard way of dynamically discovering and importing the definitions of web components ","text":"the main piece to our integrations is wrapped up in something we call \"the magic script\". script a standard way of dynamically discovering and importing definitions web components on fly. leverage this approach all hax platform because it simplifies initial question how teach cms / app about components. theres an entire dev.to series integration\n methodology if you'd like more detail why do or works. integration stand alone repo you can use for custom builds, found unbundled repo\n. below what recommended want cdn wide array elements already include builds.\nwindow.__appcdn=\"https://cdn.webcomponents.psu.edu/cdn/\";\n<script></script>\nthis will load off penn state automatically hydrate discovered page, including h-a-x family tags.\n\nhax things\n has every support as well some examples angular other frameworks (see folder that repo). common example see part wordpress plugin (code below)\nwordpress example\n(function ($) {\n\t$(document).ready(function () {\n // press\n var haxthepress = document.createelement('wysiwyg-hax');\n temp document.createelement('template');\n target tinymce area\n const content document.queryselector('textarea#content');\n replicate was providing light dom\n haxthepress.fieldclass 'wp-editor-area';\n haxthepress.fieldname 'content';\n haxthepress.fieldid haxthepress.opendefault true;\n haxthepress.elementalign 'left';\n haxthepress.savebuttonselector document.queryselector('input[type=\"submit\"]#publish');\n (window.haxthepressconnector) haxthepress.appstoreconnection window.haxthepressconnector;\n }\n set template tag previously textarea\n temp.innerhtml content.value;\n append into wysiwyg\n haxthepress.appendchild(temp.clonenode(true));\n insert field exactly where was\n content.parentnode.insertbefore(haxthepress, content);\n web\n content.parentnode.removechild(content);\n\t});\n})(jquery);\nin able integrate with wysiwyg-hax by using jquery correctly time when loaded dom ready, then replacing \"content\" area (a textarea id=\"content\") at run light-dom capable tag.\ngeneral advisement\nhaxeditor keeps so much functionality front-end there's really very little tying to..well.. anything. result, easy systems currently have wysiwyg capabilities.\nall effectively boil down four things\nend point content\nend save appstore specification\nend upload files (optional)\n\ncontent filtering\nbecause are valid html tags your system may accept them saved database but also be doing filtering xss sanitation prior storage. process storage (and should) strips out mark up, you'll need add white-listing capabilities order ensure component pass through should."}]
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/manifest.json b/github-pages-deploy-action-temp-deployment-folder/manifest.json
new file mode 100644
index 0000000..65b8272
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/manifest.json
@@ -0,0 +1,65 @@
+{
+ "name": "hax-the-web",
+ "short_name": "haxtheweb",
+ "description": "Project home and documentation for all things HAX",
+ "icons": [
+ {
+ "src": "files/haxcms-managed/48x48-3450183.png",
+ "sizes": "48x48",
+ "type": "image\/png",
+ "density": "1.0"
+ },
+ {
+ "src": "files/haxcms-managed/72x72-3450183.png",
+ "sizes": "72x72",
+ "type": "image\/png",
+ "density": "1.5"
+ },
+ {
+ "src": "files/haxcms-managed/96x96-3450183.png",
+ "sizes": "96x96",
+ "type": "image\/png",
+ "density": "2.0"
+ },
+ {
+ "src": "files/haxcms-managed/144x144-3450183.png",
+ "sizes": "144x144",
+ "type": "image\/png",
+ "density": "3.0"
+ },
+ {
+ "src": "files/haxcms-managed/192x192-3450183.png",
+ "sizes": "192x192",
+ "type": "image\/png",
+ "density": "4.0"
+ },
+ {
+ "src": "files/haxcms-managed/256x256-3450183.png",
+ "sizes": "256x256",
+ "type": "image\/png",
+ "density": "4.0",
+ "purpose": "any"
+ },
+ {
+ "src": "files/haxcms-managed/512x512-3450183.png",
+ "sizes": "512x512",
+ "type": "image\/png",
+ "density": "4.0",
+ "purpose": "maskable"
+ }
+ ],
+ "scope": "/haxtheweb/",
+ "start_url": "/haxtheweb/",
+ "display": "standalone",
+ "theme_color": "#009dc7",
+ "background_color": "#009dc7",
+ "dir": "auto",
+ "lang": "",
+ "orientation": "any",
+ "display_override": [
+ "window-controls-overlay"
+ ],
+ "categories": [
+ "education"
+ ]
+}
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/package.json b/github-pages-deploy-action-temp-deployment-folder/package.json
new file mode 100644
index 0000000..68e0f6d
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "haxtheweb",
+ "version": "9.0.5",
+ "description": "Project home and documentation for all things HAX",
+ "main": "index.html",
+ "author": {
+ "name": "btopro"
+ },
+ "license": "Apache-2.0",
+ "private": false,
+ "publishConfig": {
+ "access": "public"
+ },
+ "scripts": {
+ "start": "npm run dev",
+ "ghpages:build": "rm dist && rm assets/babel* && rm build && rm node_modules && rm wc-registry.json",
+ "dev": "npx @haxtheweb/haxcms-nodejs",
+ "dev-theme": "cd custom && npm start"
+ }
+}
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/.gitkeep b/github-pages-deploy-action-temp-deployment-folder/pages/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/autloader/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/autloader/index.html
new file mode 100644
index 0000000..0a31f5d
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/autloader/index.html
@@ -0,0 +1 @@
+
My great new content!
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/blox/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/blox/index.html
new file mode 100644
index 0000000..0a31f5d
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/blox/index.html
@@ -0,0 +1 @@
+
My great new content!
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/concepts-app/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/concepts-app/index.html
new file mode 100644
index 0000000..16b877e
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/concepts-app/index.html
@@ -0,0 +1,2 @@
+
An App adds remote data capabilities to HAX. Want to search Youtube without leaving your editing experience? Hax Apps are the way to do that. Apps show up for users under the Find
+ menu and while we provide definitions for talking to commonly used APIs, it can be modified to connect to almost anything.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/core-concepts/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/core-concepts/index.html
new file mode 100644
index 0000000..c01e6e7
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/core-concepts/index.html
@@ -0,0 +1,6 @@
+
A Gizmo is an advanced piece of media or interactivity placed on the page. At a technical level, it is a web component, but to your users and content readers it's an advanced piece of functionality helping them complete a task. Maybe they want to embed an article from Wikipedia, or create a gorgeous, responsive video. How would they do that without advanced code knowledge?
+
Gizmo's ensure that your users have a consistent visual presentation and authoring experience across a myriad of complex functionality. Any web component can be wired to support HAX.
+
An App adds remote data capabilities to HAX. Want to search Youtube without leaving your editing experience? Hax Apps are the way to do that. Apps show up for users under the Find
+
+
+ menu and while we provide definitions for talking to commonly used APIs, it can be modified to connect to almost anything.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/apps/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/apps/index.html
new file mode 100644
index 0000000..e18e33b
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/apps/index.html
@@ -0,0 +1,144 @@
+
A single App definition
+
This is an example of how the Flickr
+
+
+
+ integration is set up in haxtheweb.org. Below this integration's pieces have been annotated i order to illustrate what each provides to HAX. For more advanced integrations see the complete example
+
+
+
+
+.
+ {
+// info about the source of this integration
+"details": {
+ // title to display in the UI
+ "title": "Flickr",
+ // icon to represent it in UIs
+ "icon": "image:collections",
+ // an optional image to present it
+ "image": "flickr.jpg",
+ // color to accent it in UIs
+ "color": "pink",
+ // author of the app (future)
+ "author": "Yahoo",
+ // description (future)
+ "description": "The original photo sharing platform on the web.",
+ // status (future)
+ "status": "available",
+ // rating (future)
+ "rating": "0",
+ // tags for grouping sources (future)
+ "tags": ["images", "creative commons", "crowdsourced"]
+},
+// the connection object declares how to connect to this service
+"connection": {
+ "protocol": "https",
+ "url": "api.flickr.com",
+ // any additional headers that need added
+ "headers": {
+ "Authorization": "Bearer POTENTIALLYSOMEBIGSIGNATUREHERE"
+ },
+ // any data to send with the API call, usually for authorization or querying
+ "data": {
+ "api_key": "SOMEBIGKEYHERE"
+ },
+ // supported operations include, browse, read, edit, add, delete
+ "operations": {
+ "browse": {
+ "method": "GET",
+ "endPoint": "services/rest",
+ // pagination methodology (future)
+ "pagination": {
+ "style": "page",
+ "props": {
+ "per_page": "photos.perpage",
+ "total_pages": "photos.pages",
+ "page": "photos.page"
+ }
+ },
+ // data needed in order to search this
+ "search": {
+ // JSON schema of key to search with, label to supply and input field type
+ "text": {
+ "title": "Search",
+ "type": "textfield"
+ },
+ "license": {
+ "title": "License type",
+ "type": "select",
+ "options": {
+ "1": "Public domain",
+ "2": "CC attribution",
+ "3": "CC Zero",
+ "4": "CC Share-alike"
+ }
+ }
+ },
+ // data to send on requests
+ "data": {
+ "method": "flickr.photos.search",
+ "text": "",
+ "safe_search": "1",
+ "per_page": "20",
+ "page": "1",
+ "format": "json",
+ "nojsoncallback": "1",
+ "extras": "license,description,url_l,url_s"
+ },
+ // a map of the information coming across the wire
+ "resultMap": {
+ // what type of gizmo to match results to
+ "defaultGizmoType": "video",
+ // the location where the items are found in the response
+ "items": "resource.items.collection",
+ // what data to map to in a preview
+ "preview": {
+ "title": "Stuff",
+ "details": "Details",
+ "image": "whatever.jpg",
+ "id": "meta.id"
+ },
+ // the fields and what they map to off the API
+ "gizmo": {
+ "type": "",
+ "title": "",
+ "description": "",
+ "source": "",
+ "citation": "",
+ "alt": "",
+ "caption": "",
+ "color": ""
+ }
+ }
+ },
+ // reading individual nodes off the API
+ "read": {
+ "method": "GET",
+ "endPoint": "node/<%= id %>",
+ "data": {
+ "deep-load-refs": "node"
+ }
+ },
+ // editing inputs (future)
+ "edit": {
+ "method": "PUT",
+ "endPoint": "node/<%= id %>/update"
+ },
+ // adding / uploading connection details
+ "add": {
+ "method": "POST",
+ "endPoint": "node",
+ "data": {
+ "title": "A new item",
+ "img": "This is the image"
+ }
+ },
+ // delete request details
+ "delete": {
+ "method": "DELETE",
+ "endPoint": "node/<%= id %>/delete"
+ }
+ }
+}
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/autoloader/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/autoloader/index.html
new file mode 100644
index 0000000..6d9deff
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/autoloader/index.html
@@ -0,0 +1,87 @@
+
Autoloader is waaayyy easier to implement then the other parts of the appstore spec and is probably the most important as it loads all the elements that will be available to your users. All it is is an array or object of references to elements that HAX should forcibly load the definitions of once it's done bootstrapping. Here's a basic example with the steps as to what HAX does with this information
+
+
+
HAX loads the appstore definition
+
+
HAX finishes its bootstrap and is ready to use
+
+
It then loops through each autoloader element and does the following:
+
+
+
+
attempts to dynamically import the definition of the element
+
+
It then creates an instance of the element (virtually) and looks for
+
+ static get haxProperties
+
+
+
+
If this exists and is valid haxSchema then you can leverage it in hax!
+
+
+
Spec details
+
There are a few different ways you can declare references to the autoloader schema. Here is a simple example of all three common forms an then we'll explain each.
The most common method of import is simply
+ "tag-name": "location-of-tag.js"
+. You'll see this for importing anything that's been published
+ WITH
+
+ static get haxProperties
+. You can also use this to add your own published / built elements that have their own haxProperties.
+
+
Definition import
+
This is basically just to enable future support for defining capabilities at run time. It could also be used to issue an element but not actually import anything (so
+ "whatever": { "import": ""}
+ ). This is because possibly other logistics of your CMS / application are in charge of
+ WHEN
+ this definition gets imported.
+
+
Definition import + schema
+
This is the most powerful but also most verbose. This allows you to potentially import someone else's element that
+ DOES NOT
+ have
+ haxSchema
+ defined, and then define it yourself on the fly! This means you can leverage community elements and supply their wiring to talk to HAX based on your own mental model. This allows wiring up anything to HAX, but also the performance benefit of potentially building a design library but not including references to the
+ static get haxProperties
+ in your class for the element.
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/blox/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/blox/index.html
new file mode 100644
index 0000000..ff75cbb
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/blox/index.html
@@ -0,0 +1,49 @@
+
Blox are the internal name of what a normal wysiwyg would call Layouts. The Layouts menu lists the blox / grid-plate tags that you can populate. There's no other way to generate a layout plate in HAX to ensure that decent defaults are produced.
+
The schema below will generate the Blox / Layout definition seen above.
+ {
+"blox": [ {
+ // details for displaying this visually in the UI
+ "details": {
+ "title": "33 / 66 columns",
+ "author": "ELMS:LN",
+ "icon": "hax:4/8",
+ "status": "available",
+ "layout": "4/8"
+ },
+ // the definition of this layout piece which is a series of hax element schema definitions as an array
+ "blox": [
+ {
+ "tag": "place-holder",
+ "properties": {
+ "slot": "col-2",
+ "type": "text"
+ },
+ "content": ""
+ },
+ {
+ "tag": "place-holder",
+ "properties": {
+ "slot": "col-1",
+ "type": "image"
+ },
+ "content": ""
+ },
+ {
+ "tag": "place-holder",
+ "properties": {
+ "slot": "col-1",
+ "type": "image"
+ },
+ "content": ""
+ },
+ {
+ "tag": "place-holder",
+ "properties": {
+ "slot": "col-1",
+ "type": "image"
+ },
+ "content": ""
+ }
+}]
+},
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/index.html
new file mode 100644
index 0000000..061fdc5
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/index.html
@@ -0,0 +1,37 @@
+
The app store specification is what provides HAX with it's raw data integration capabilities. It's a block of JSON that tells HAXeditor the rules by which it is to play by. A complete example is available in the h-a-x tag's demo
+
+
+
+
+ but we'll outline what the different parts of this JSON supports as well as one app in detail.
+
Keys and what they mean
+
+
Apps
+
+
+
+ - A source of data either to upload or search. Apps supply the definition of how to connect to the remote data, search it, upload things to it.
+
+
+
Blox
+
+
+
+ - A block of elements. Blox are a series of elements wrapped inside of a plate element. Blox can be modified in pieces but fundamentally the entire thing is one piece. A block can be moved up and down as an entire group.
+
+
+
Stax
+
+
+
+ - A stack of elements is a series of HTML elements that are added into the DOM all at once. Think of these like a
+
+
+
Autoloader
+
+
+
+ - A series of elements that are automatically to be loaded when HAX is setup.
+
+
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/stax/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/stax/index.html
new file mode 100644
index 0000000..df1cdea
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-app-store/stax/index.html
@@ -0,0 +1,209 @@
+
Stax are what most WYSIWYG systems would call Templates. Stax in HAX are a series of HAX element schema's in succession.
+
+
Below is a definition for the "example lesson" seen above. This is a larger example, most templates will probably only be a few items. A stack template is like a blox / layout element except the pieces do NOT have to move as a group and they can be deleted. It's more of a shortcut for generating items. The details area describes the element visually in the UI while the subsequent stax
+
+
+ property is an array of HAX element schemas.
+ "stax": [
+{
+"details": {
+"title": "Example Lesson",
+"image": "",
+"author": "ELMS:LN",
+"description": "An example of what HAX can do",
+"status": "available",
+"rating": "0",
+"tags": [
+"example"
+]
+},
+"stax": [
+{
+"tag": "h2",
+"properties": {},
+"content": "Introduction to ELMS: Learning Network"
+},
+{
+"tag": "p",
+"properties": {},
+"content": "What is ELMS: Learning Network? How is it fundamentally different from other learning technologies? Why is it your reading this when it's example text that you've just added to see how to make a really solid introduction to a new unit of instruction? Let's keep reading to find out!"
+},
+{
+"tag": "video-player",
+"properties": {
+"style": "width: 75%; margin: 0px auto; display: block;",
+"source": "https://www.youtube.com/watch?v=pKLPQ4ufo64",
+"src": "https://www.youtube-nocookie.com/embed/pKLPQ4ufo64?showinfo=0&controls=1&rel=0",
+"iframed": true,
+"sandboxed": false,
+"width": "560",
+"height": "315",
+"responsive": true,
+"caption": "What is ELMS:LN? Why is it fundamentally different from any other educational technology that's ever existed? What is sustainable innovation? Why is this so ...",
+"secondaryColor": "#fff9c4",
+"textColor": "#000000",
+"secondaryColorClass": "yellow lighten-4",
+"textColorClass": "black-text",
+"ytNocookie": true,
+"ytSuggested": false,
+"ytControls": true,
+"ytTitle": false,
+"vimeoTitle": false,
+"vimeoByline": false,
+"vimeoPortrait": false,
+"videoColor": "FF031D",
+"resource": "#86bfd28d-8b57-a3b9-b2e5",
+"prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+},
+"content": ""
+},
+{
+"tag": "h3",
+"properties": {},
+"content": "Pretest"
+},
+{
+"tag": "self-check",
+"properties": {
+"style": "width: 50%; float: right;",
+"title": "Self-Check",
+"image": "https://farm1.staticflickr.com/642/21641107852_3602f9c1a8_b.jpg",
+"alt": "A few stickers associated with ELMS:LN are shown presented on the back of a laptop.",
+"correct": false,
+"textColor": "#000000",
+"textColorClass": "black-text",
+"backgroundColor": "#b2dfdb",
+"backgroundColorClass": "teal lighten-4",
+"resource": "#08d09967-a7c9-3d02-8935",
+"prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+},
+"content": " True or False. ELMS:LN is a traditional learning management system.\n\n FALSE. ELMS: Learning Network is considered to be a Next Generation Digital Learning Environment.\nLearn more about NGDLE in this blog post on Educause\n.\n\n"
+},
+{
+"tag": "p",
+"properties": {},
+"content": "If you think you already know about ELMS:LN, let's find out ahead of time! Take the self-check on the right to find out if ELMS:LN is a traditional Learning Management system or something more"
+},
+{
+"tag": "hr",
+"properties": {
+"style": "width: 75%;"
+},
+"content": ""
+},
+{
+"tag": "h3",
+"properties": {},
+"content": "History Review"
+},
+{
+"tag": "p",
+"properties": {},
+"content": "Now that we've read about what ELMS:LN is (and is not). Let's take a different kind of self-check to illustrate the flexibility of the HAX authoring platform."
+},
+{
+"tag": "multiple-choice",
+"properties": {
+"style": "width: 75%; margin: 0px auto; display: block;",
+"checkLabel": "Check guess",
+"resetLabel": "Clear",
+"hideTitle": true,
+"question": "Who founded the ELMS:LN Platform?",
+"answers": [
+{
+"correct": true,
+"label": "Bryan Ollendyke"
+},
+{
+"correct": false,
+"label": "Mythic Elves"
+},
+{
+"correct": false,
+"label": "Michael Potter"
+},
+{
+"correct": false,
+"label": "Nikki Massaro Kauffman"
+},
+{
+"correct": false,
+"label": "Charles Lavera"
+}
+],
+"correctText": "Great job!",
+"incorrectText": "Try again",
+"randomize": true,
+"typeof": "oer:Assessment",
+"resource": "#97ffed48-c928-39ae-1bea",
+"prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+},
+"content": ""
+},
+{
+"tag": "multiple-choice",
+"properties": {
+"style": "width: 75%; margin: 0px auto; display: block;",
+"title": "ELMS Development team",
+"checkLabel": "Check your guess",
+"resetLabel": "Clear answers",
+"hideTitle": false,
+"question": "Who is responsible for ELMS:LN existing? Who improves it and wants it to be the best NGDLE solution to transform education and the world?",
+"answers": [
+{
+"correct": true,
+"label": "Nikki Massaro Kauffman"
+},
+{
+"correct": true,
+"label": "Michael Potter"
+},
+{
+"correct": true,
+"label": "Charles Lavera"
+},
+{
+"correct": true,
+"label": "Bryan Ollendyke"
+},
+{
+"correct": true,
+"label": "Anyone, ELMS:LN is an open community developed by multiple organizations!"
+}
+],
+"displayedAnswers": [
+{
+"correct": true,
+"label": "Nikki Massaro Kauffman"
+},
+{
+"correct": true,
+"label": "Michael Potter"
+},
+{
+"correct": true,
+"label": "Charles Lavera"
+},
+{
+"correct": true,
+"label": "Bryan Ollendyke"
+},
+{
+"correct": true,
+"label": "Anyone, ELMS:LN is an open community developed by multiple organizations!"
+}
+],
+"correctText": "Great job! You got our trick question!",
+"incorrectText": "Try again, there's some more answers...",
+"randomize": true,
+"typeof": "oer:Assessment",
+"resource": "#59426af4-ecf2-f49d-06a6",
+"prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+},
+"content": ""
+}
+]
+}
+]
+}
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-element-schema/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-element-schema/index.html
new file mode 100644
index 0000000..9bafee0
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-element-schema/index.html
@@ -0,0 +1,46 @@
+
Example of HAX element schema JSON object. It's a pretty simple abstraction of HTML elements that helps with packaging and sanitization.
+ {
+"tag": "p",
+"properties": {},
+"content": "What is ELMS: Learning Network? How is it fundamentally different from other learning technologies? Why is it your reading this when it's example text that you've just added to see how to make a really solid introduction to a new unit of instruction? Let's keep reading to find out!"
+}
+
+
video-player (web component)
+ {
+"tag": "video-player",
+"properties": {
+"style": "width: 75%; margin: 0px auto; display: block;",
+"source": "https://www.youtube.com/watch?v=pKLPQ4ufo64",
+"src": "https://www.youtube-nocookie.com/embed/pKLPQ4ufo64?showinfo=0&controls=1&rel=0",
+"iframed": true,
+"sandboxed": false,
+"width": "560",
+"height": "315",
+"responsive": true,
+"caption": "What is ELMS:LN? Why is it fundamentally different from any other educational technology that's ever existed? What is sustainable innovation? Why is this so ...",
+"secondaryColor": "#fff9c4",
+"textColor": "#000000",
+"secondaryColorClass": "yellow lighten-4",
+"textColorClass": "black-text",
+"ytNocookie": true,
+"ytSuggested": false,
+"ytControls": true,
+"ytTitle": false,
+"vimeoTitle": false,
+"vimeoByline": false,
+"vimeoPortrait": false,
+"videoColor": "FF031D",
+"resource": "#86bfd28d-8b57-a3b9-b2e5",
+"prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+},
+"content": ""
+}
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-schema/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-schema/index.html
new file mode 100644
index 0000000..d3990bf
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hax-schema/index.html
@@ -0,0 +1,270 @@
+
Implementing HAXSchema
+
In order for your element to talk to the HAX editor, you need to implement static get haxProperties()
+ on your element. This callback either returns a String
+ based location of where the HAXSchema lives OR the JSON blob directly. The appstore documentation page also describes how you can integrate without defining this directly on your element.
HAXSchema is the name of our standard for expressing the way HAX can communicate with and implement your web component. This is broken into two major groupings of settings and some basic Boolean
+.
+
+// can this item be scaled in the UI, will it have a slider for % width
+canScale: true,
+// can you position the item left or center justified
+canPosition: true,
+// can you edit the raw source of this element (future)
+canEditSource: false
+
+
After these Booleans we get into the "Gizmo" section. A Gizmo is what internal to the code base we're calling a custom element as it is represented in HAX interfaces like the Make
+ area. The reason for this is so that the word element isn't everywhere or else it would get too confusing. A Gizmo describes the way HAX should reference this item in interfaces.
+
A detailed example below in the comments
+
+gizmo: {
+// title to display
+title: "Example hax-element",
+// description
+description:
+ "Provide an example to pick apart of a working HAX element",
+// icon to represent this in selection displays
+icon: "icons:android",
+// color to tint this when in displays
+color: "green",
+// grouping data for filtering in displays (future)
+groups: ["Hax"],
+// handlers allow HAX to stitch together sources of information with gizmos to render that information
+// example: Youtube supplies a source value that points to a url of the video
+// if the user picks a video from youtube, things that match
+// 'video' as a type and then match on any 1 additional field
+// will be presented to the user as the way to render the video
+// in the case of YouTube this presents a video-player or QR code
+// in default implementations with these tags.
+// This is because the match is on source, which the key of source
+// in the handles block => points to the property to insert into
+// it is an array of objects so you can map to multiple types
+// type is a reserved key and can be anything so long as
+// a source of data is looking for something matching that "type"
+handles: [
+{
+ // what it can present
+ type: "video",
+ // the property coming from the app on the left => property in the element on the right
+ source: "source",
+ // this pulls the title off the API and sticks it in the caption field of the element
+ title: "caption",
+ // fallback matches
+ caption: "caption",
+ description: "caption",
+ // ability to pull color across though this would be rare from an API
+ color: "primaryColor"
+}
+],
+// any metadata you wish to ship along
+meta: {
+ author: "You",
+ owner: "Your Company"
+}
+},
+
Settings for wiring up to HAX
+
Settings forms for HAX capable elements are grouped into three different areas. The quick
+settings segment of the schema provides quick edit, singular properties on the UI as icons. This is present when you select an item in HAX (see screenshot).
+
+
+
+
+settings: {
+quick: [
+ {
+ property: "accentColor",
+ title: "Accent color",
+ description: "Select the accent color for the player.",
+ inputMethod: "colorpicker",
+ icon: "editor:format-color-fill"
+ },
+ {
+ attribute: "dark",
+ title: "Dark theme",
+ description: "Enable dark theme for the player.",
+ inputMethod: "boolean",
+ icon: "invert-colors"
+ }
+],
+
Configure block
+
The configure section shows up when moving on to the settings manager
+
After hitting settings, you'll see the manager open up defaulted to the configure settings display.
+
+configure: [
+{
+ property: "source",
+ title: "Source",
+ description: "The URL for this video.",
+ inputMethod: "textfield",
+ icon: "link",
+ required: true,
+ validationType: "url"
+},
+{
+ property: "track",
+ title: "Closed captions",
+ description: "The URL for the captions file.",
+ inputMethod: "textfield",
+ icon: "link",
+ required: true,
+ validationType: "url"
+},
+{
+ property: "thumbnailSrc",
+ title: "Thumbnail image",
+ description: "Optional. The URL for a thumbnail/poster image.",
+ inputMethod: "textfield",
+ icon: "link",
+ required: true,
+ validationType: "url"
+},
+{
+ property: "mediaTitle",
+ title: "Title",
+ description: "Simple title for under video",
+ inputMethod: "textfield",
+ icon: "av:video-label",
+ required: false,
+ validationType: "text"
+},
+{
+ property: "accentColor",
+ title: "Accent color",
+ description: "Select the accent color for the player.",
+ inputMethod: "colorpicker",
+ icon: "editor:format-color-fill"
+},
+{
+ attribute: "dark",
+ title: "Dark theme",
+ description: "Enable dark theme for the player.",
+ inputMethod: "boolean",
+ icon: "invert-colors"
+}
+],
+
Advanced block
+
The advanced section shows up when in the configuration manager is open and the user selects Advanced
+
+advanced: [
+{
+ property: "darkTranscript",
+ title: "Dark theme for transcript",
+ description: "Enable dark theme for the transcript.",
+ inputMethod: "boolean"
+},
+{
+ property: "hideTimestamps",
+ title: "Hide timestamps",
+ description: "Hide the time stamps on the transcript.",
+ inputMethod: "boolean"
+},
+{
+ property: "preload",
+ title: "Preload source(s).",
+ description:
+ "How the sources should be preloaded, i.e. auto, metadata (default), or none.",
+ inputMethod: "select",
+ options: {
+ preload: "Preload all media",
+ metadata: "Preload media metadata only",
+ none: "Don't preload anything"
+ }
+},
+{
+ property: "stickyCorner",
+ title: "Sticky Corner",
+ description:
+ "Set the corner where a video plays when scrolled out of range, or choose none to disable sticky video.",
+ inputMethod: "select",
+ options: {
+ none: "none",
+ "top-left": "top-left",
+ "top-right": "top-right",
+ "bottom-left": "bottom-left",
+ "bottom-right": "bottom-right"
+ }
+},
+{
+ property: "sources",
+ title: "Other sources",
+ description: "List of other sources",
+ inputMethod: "array",
+ properties: [
+ {
+ property: "src",
+ title: "Source",
+ description: "The URL for this video.",
+ inputMethod: "textfield"
+ },
+ {
+ property: "type",
+ title: "Type",
+ description: "Media type data",
+ inputMethod: "select",
+ options: {
+ "audio/aac": "acc audio",
+ "audio/flac": "flac audio",
+ "audio/mp3": "mp3 audio",
+ "video/mp4": "mp4 video",
+ "video/mov": "mov video",
+ "audio/ogg": "ogg audio",
+ "video/ogg": "ogg video",
+ "audio/wav": "wav audio",
+ "audio/webm": "webm audio",
+ "video/webm": "webm video"
+ }
+ }
+ ]
+},
+{
+ property: "tracks",
+ title: "Track list",
+ description: "Tracks of different languages of closed captions",
+ inputMethod: "array",
+ properties: [
+ {
+ property: "kind",
+ title: "Kind",
+ description: "Kind of track",
+ inputMethod: "select",
+ options: {
+ subtitles:
+ "subtitles" /*,
+ Future Features
+ 'description': 'description',
+ 'thumbnails': 'thumbnails',
+ 'interactive': 'interactive',
+ 'annotation': 'annotation'*/
+ }
+ },
+ {
+ property: "label",
+ title: "Label",
+ description:
+ 'The human-readable name for this track, eg. "English Subtitles"',
+ inputMethod: "textfield"
+ },
+ {
+ property: "src",
+ title: "Source",
+ description: "Source of the track",
+ inputMethod: "textfield"
+ },
+ {
+ property: "srclang",
+ title:
+ 'Two letter, language code, eg. \'en\' for English, "de" for German, "es" for Spanish, etc.',
+ description: "Label",
+ inputMethod: "textfield"
+ }
+ ]
+}
+]
+}
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hello-world-element/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hello-world-element/index.html
new file mode 100644
index 0000000..a5d74ed
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/hello-world-element/index.html
@@ -0,0 +1,63 @@
+
+
+// import the reference to HAXWiring to use in your element
+import { HAXWiring } from "@lrnwebcomponents/hax-body-behaviors/lib/HAXWiring.js";
+// connectedCallback is a life cycle hook in the web component specification
+// we tie into it so that when this element is appended to the DOM
+// it can tell HAX it exists
+connectedCallback() {
+// establish the wiring
+this.HAXWiring = new HAXWiring();
+// call setup which will ensure that it is setup when hax-store is ready
+this.HAXWiring.setup(
+ {
+ canScale: true,
+ canPosition: true,
+ canEditSource: false,
+ gizmo: {
+ title: "Example hax-element",
+ description:
+ "Provide an example to pick apart of a working HAX element",
+ icon: "icons:android",
+ color: "green",
+ groups: ["Hax"],
+ handles: [
+ {
+ type: "todo:read-the-docs-for-usage"
+ }
+ ],
+ meta: {
+ author: "You",
+ owner: "Your Company"
+ }
+ },
+ settings: {
+ quick: [],
+ configure: [
+ {
+ property: "title",
+ description: "",
+ inputMethod: "textfield",
+ required: false,
+ icon: "icons:android"
+ },
+ {
+ property: "available",
+ description: "",
+ inputMethod: "boolean",
+ required: false,
+ icon: "icons:android"
+ }
+ ],
+ advanced: []
+ }
+ },
+ 'example-hax-element',
+ this
+ );
+}
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/index.html
new file mode 100644
index 0000000..81a9f7f
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/index.html
@@ -0,0 +1,18 @@
+
Include HAX in your project
+
The developers docs will lay out the many specifications that make HAX possible including core concepts, different schema's it leverages ad how to define app store spec in order to take integrations further.
+ # get the code
+npm install --save @lrnwebcomponents/h-a-x
+yarn add @lrnwebcomponents/h-a-x
+
+# reference it in your project
+import "@lrnwebcomponents/h-a-x/h-a-x.js";
+
+# use it in your template with an appstore definition if you like
+< h-a-x >
+
Now this paragraph is editable
+
+< / h-a-x >
+
+
Uhh, is that it?
+
Yeah, that's it. Behold the power of a thousand open source suns raining down all their hate on the editors of the past and their complex integrations or ecosystem lock in.
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/wcfactory-tooling/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/wcfactory-tooling/index.html
new file mode 100644
index 0000000..bce69b1
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/hax-development/wcfactory-tooling/index.html
@@ -0,0 +1,9 @@
+
We made tooling to publish web components with ease and in any library. It's called WCFactory and while not required, it's the tooling we use for managing HAX and the many related elements in our library.
+
A factory that churns out web components, library agnostic with a unified development, testing, and build to production pipeline. We want to eliminate the barriers to web component adoption because as of Oct 23rd, 89.18% of all traffic can handle web components with no polyfills. Get it on npm
+ or yarn
+ and get publishing!
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/concepts/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/concepts/index.html
new file mode 100644
index 0000000..829995c
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/concepts/index.html
@@ -0,0 +1,9 @@
+
HAXcms seeks to be a microsite generator and manager that doesn't require any command line in order to operate
+. HAXcms leverages HAX to give a best in class authoring experience while HAXcms seeks to eliminate all the barriers to then publishing that content online.
+
Some words and phrases worth understanding in HAXcms
+
HAXeditor - the HAX editor
+
microsite - An individual site that's been created by a user
+
Outline - All sites are an outline, we use JSON Outline Schema to manage this
+
Theme - A single web component based theme that's agnostic of content
+
Elements / web components - design assets that work anywhere
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/index.html
new file mode 100644
index 0000000..c5b41e1
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/index.html
@@ -0,0 +1,7 @@
+
HAXcms, that which powers the site you are currently reading is a powerful "static site generator" paradigm. It leverages server technology in order to orchestrate a static site. That way the "server" is only used when needed for a user to securely develop their content.
+
Difference from past static generators
+
Unlike solutions like Jekyll
+
+, HAXcms is for anyone to publish a website, not just those that understand command line. HAXcms is intended to be installed and then allow users to entirely use a UI to create, publish and manage micro-sites.
+
Visualization
+
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/installation/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/installation/index.html
new file mode 100644
index 0000000..b1913fc
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/installation/index.html
@@ -0,0 +1,228 @@
+
Generic PHP install directions
+
Have PHP? well then you can setup HAXcms pretty quick. Just download HAXcms and navigate to its directory in a browser. It'll attempt to automatically install (which is to create two basic folders). If all goes well you'll see some ASCii art telling you what your password is. HAXcms seeks to be a 0 config installation so if anything didn't work or make sense, just drop us a line in the issue queues.
+
Or from Command Line...
+
Just run this one command and you'll be HAXing the web in no time! This will step you through prompts (which can be scripted via arguments) to feed the backend what it needs to create the few configuration files it uses to load.
+ # HAX the web and answer the prompts
+bash scripts/haxtheweb.sh
+
+
A note on bash
+
+
+
+
+
If you're having issues installing via the bash script, ensure you are on bash version 4.x. Some OS flavors start at 3.x which won't work.
+
+
+
+
+
MAMP
+
MAMP
+
+
+
+
+
+
+ allows Mac and PC users to rapidly install a working webdev stack on their machine. Here's the steps you need to take if using this (or on similar site hosting).
+
Download the latest copy of HAXcms from github
+
+
+
+ and place this in MAMP/htdocs
+
+either at the root level (as in copying the files you download into htdocs as shown in the image below) or by placing the folder in the directory (in the case where you have MAMP already installed / want to keep things tidy).
+
+
Open MAMP and hit the Start Servers Button
+
+
+
+
+
+
Click MY WEBSITE in MAMP start page to get started
+
+
+
+
+
Now you can build website organically off of MAMP!
+
DDEV / Docksal / Lando / Vagrant
+
We recommend using HAXcms in a docker container manager like ddev
+
+
+
+
+
+
+, though based on above you can see basically we're just downloading and running one command to get going. We support all of the above methods so pick the one you work with most often.
open a terminal window, go to the directory and type ddev start
+
+
+
+
+
+
+
+ (for ddev) or fin init
+
+
+
+
+
+
+
+ (for docksal) or lando start && lando magic
+
+
+
+
+
+
+
+ (for lando) or vagrant up
+
+
+
+
+
+
+
+ (for vagrant)
+
+
+
+
+
+
+
+
+
go to the link any of them give you in a browser
+
+
+
+
+
+
+
+
+
username/password is admin
+
+
+
+
+
+
+
+/admin
+
+
+
+
+
+
+
+ to get building out static sites locally that you can push up anywhere!
+
+
+
+
+
+
+
+
+
Click the icon in the top right and you're off and running!
+
+
+
+
+
+
+
+
+
+
Apache gotchas
+
If installing on an existing server it might already have apache configurations that would cause HAXcms to have issues out of the gate
+ (or any CMS for that matter). Make sure local overrides are allowed with something like the following:
+
+ # /etc/apache2/apache2.conf
+
+<directory var/www/haxlocation>
+ Options Indexes FollowSymLinks
+ AllowOverride All
+ Require all granted
+</directory>
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/life-cycle/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/life-cycle/index.html
new file mode 100644
index 0000000..bf4fb27
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/life-cycle/index.html
@@ -0,0 +1,56 @@
+
This is a general life cycle that happens when HAXcms "boots up". When web components are unpacking the contents of what to do it generally will work this way.
+
page load, should it be no-js or a web component delivered, preflight
+
haxcms-site-builder loads site.json, reads JSON Outline Schema and starts to bootstrap that into a theme, items, title, etc
+
Appends a haxcms-editor-builder tag which checks for "context"
+
Context is established based on global values for php, nodejs, beaker, etc
+
Uses a login end point to check if there's a JWT in the user's local data
HAXeditor gets injected into the correct place in the theme which then all of that unpacks and does its thing
+
+
Event driven architecture
+
HAXcms allows for jumping in at different core operational steps and reacting to these changes based on an event driven design pattern. This means that an event "fires" in PHP, much like it does in JavaScript and code written to react to it can make changes at that point in the operation.
+
Here is an example from HAXiam which implements custom configuration event listeners
+// file included which has the class in question
+include_once str_replace('_iamConfig/HAXcmsConfig.php', '', __FILE__) . '/system/lib/IAM.php';
+// in the configuration file HAXcmsConfig.php
+// this adds an event listener for the haxcms-jwt-get event
+// and then says to pass the data in question to class $IAM->getJwtUser();
+$HAXCMS->addEventListener('haxcms-jwt-get', array($IAM, 'getJwtUser'));
+// later on in additionally included code
+class IAM {
+/**
+ * Callback for event: haxcms-jwt-get
+ */
+ public function getJwtUser(&$token) {
+ if ($this->enterprise->userVar) {
+ $token['user'] = $this->enterprise->userVar;
+ }
+ }
+}
+// this ensures that there is a global $IAM object
+// it also ensures there's an instance so that when our above
+// listener fires it'll correctly associate to this code
+global $IAM;
+$IAM = new IAM();
+
Core listeners
+
Core listeners to influence how the data is constructed. You can add these to your _config/config.php file
+
haxcms-init
+ - just after HAXcms bootstraps its initial configuration
+
haxcms-site-metadata
+ - when constructing metadata block at the top of the document
+
haxcms-connection-settings
+ - for authorized users, this is the block of end points for connecting to and modifying HAXcms logic as far as where data flows.
+
+
Enterprise integrations and SSO
+
The following hooks allow for supplanting the HAXcms (intentionally) simplistic login system. This allows you to do custom integrations for your organization. HAXiam implements many of these
+ if you need specific examples.
+
haxcms-login-test
+ - when a login didn't pass our simplistic built in checks. Useful for enterprise integrations and other SSO methods of access
+
haxcms-validate-user
+ - same as login-test except this fires to validate every transaction to ensure the user name matches when decoding the JWT
+
haxcms-jwt-get
+ - when we ask for the JWT. This allows SSO to supply the token manually via a different methodology than our core one
+
haxcms-refresh-token-get
+ - when our connection is deemed needing to refresh, this supplies the refresh token for when and what that looks like
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/publishing/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/publishing/index.html
new file mode 100644
index 0000000..003047d
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/publishing/index.html
@@ -0,0 +1,44 @@
+
HAXcms requires being published in order to be visible to other people. Working locally or on Desktop or on a server, is akin to you writing a document on your computer. It's not shared with anyone. We recommend you setup publishing ahead of time to save hassle later.
+
Setting up publishing
+
From the HAXcms site listing
+ page, click the settings gear in the top right corner.
+
Next you'll see a modal that has options for plugging in your github credentials. We don't save your password and this aspect is optional. If you do enter your password, a one time API call is made on your behalf from your container which will setup an ssh key pair. This allows for all future requests to publish to happen automatically on your behalf. Your password is not stored. If you don't want to set this part up, you can plug in the rest of the git settings, save, and then manually publish files after using the UI (see last heading on this page).
+N
Publishing from your sites / new sites
+
When you want to share your site with people or update your website, hitting the Publish button inside of your site is how to do this. Click the settings gear in the bottom right to get started.
+
Currently GitHub is the only provider supported in the local installation method (or from DDEV / one of the supported container providers). In the future hitting publish will have additional development flexibility.
+
Understanding what's actually happening
+
+
When you hit publish, a few things happen to make your site "web ready". This is the general order of those operations:
+
HAXcms takes the underlying files and commits them all to version control (though they already should be)
+
+
+
It then pushes these to the origin of the git repository (likely github)
+
+
Then it switches to the branch you do your publishing from. In github, this is the gh-pages
+
+ branch, but can deviate as needed.
+
+
Next it deletes symlinks and replaces them with the correct references as needed and leverages the "cdn provider" you specified when setting up HAXcms in order to super charge your files for end users.
+
+
It uses twig
+
+ to step through and correctly rewrite references in the index.html of your site to match the paths of where it's going to be sent
+
+
Then it adds all this to version control and sends it up to your gh-pages branch.
+
+
It does some local file clean up and sets things back to master branch for the next time you go to work on everything
+
+
+
When this is all done, in the UI you'll see a link to your site after it's indicated a successful publish (meaning it pushed the files up there). Depending on where you host your content it may take a few minutes to see the change, though GitHub is usually up within about 2 minutes.
+
Once about 2 minutes or so has passed, refresh your live site address or type in the URL of the site. If you've been there previously, you'll probably see the same content / theme as the last time you were there. After about 5 seconds, a message will pop up indicating "new content available" and clicking it (or refreshing the browser) will give you your updated content.
+
This last step happens because of what's called a "service worker". This enables your site to be 100% offline capable and ensures that your site only uses traffic and data when it's absolutely necessary.
+
A note on non UI publishing workflows
+
You might not have (or want to) setup the credentials between HAXcms and github / your git repo. That's ok. After you hit publish go to terminal / a Git GUI and run the following to publish your site:
HAXcms will have made sure that the gh-pages and master branches are valid for distribution, even if it wasn't able to actually send these files to their publishing destination.
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/structure/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/structure/index.html
new file mode 100644
index 0000000..f633d06
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/structure/index.html
@@ -0,0 +1,11 @@
+
By design we've got a very simple structure. The goal of HAXcms isn't to lock you into anything and so we've simplified our file structure over other solutions.
+
The key directories / files include:
+
files - any files you've uploaded through the HAX interface
+
+
pages - folders named by their content uri that have index.html in it, no structure other then what you created when hitting save
+
site.json - JSON Outline Schema object that defines the pages in your site and their relationship to each other
+
index.html - front page of the PWA that stitch it all together
+
service-worker.js - makes it a PWA, no need to edi this
+
+
Screen grab of a microsite
+
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/core-elements/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/core-elements/index.html
new file mode 100644
index 0000000..43a3032
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/core-elements/index.html
@@ -0,0 +1,89 @@
+
While you're not required to use them, HAXcms supplies a series of elements that can make theme development effortless. You can see the source of these in greater detail under the theme directory of haxcms-elements
+
+
+. This is a brief overview of what they are and what they provide to your interface.
+
HAXcms seeks to apply the SDS pattern, a technique we made up just for this sentence, for dramatic effect
+. As everyone knows who is about to read the next heading, SDS stands for:
+
So. Damn. Semantic.
+
Whew, I need an ice cold drink to wash away the semantic sweats.
+
Yes, that's right, HAXcms allows you to theme a complex state managed system without needing to understand state management... like... at all.
+
"But I understand state management and it's important to me"
+
That's awesome, four people on twitter, but most designers just want to design! They don't need or want to understand the intricacies of making a collapsed field area expand relative to what item has been dictated as active in the store*.
+
*an intentionally confusing worded sentence
+
+
+
+
We use MobX to do our state management if that's something you care about and some of our themes directly implement and interface with the state management layer. See Simple Blog's footer element
+
+
+ for a great example of why state management is a PITA.
+
+
+
Back to the elements jerk
+
Ok fine, here they are. Here's the list of ES module imports to get them
Now here's what each of them provide you (pretty self explanatory because #SDS)
+
site-active-title -
+the title of the active item wrapped in a h1 tag
+
+
site-children-block
+ - all child menu items based on a criteria match
+
site-outline-block
+ - part of the outline based on criteria match
+
site-footer
+ - a basic footer with license element based on site details
+
site-modal
+ - a basic modal with button that can house other elements
+
site-breadcrumb
+
+ - a breadcrumb trail for the active menu item
+
site-dot-indicator
+ - site links but as a simple line of dots
+
site-menu-button
+ - buttons for navigating through the active items in the menu. This is next, previous, parent and first child kinds of options.
+
+
+
site-menu
+
+ - A visualization of the hierarchy of your site, complete with checkmarks given per page the user goes to (optional) as well as a lot of styling options and a highlighted bar that scrolls the menu into view for small screens. It's fantastic and one line.
+
site-top-menu
+ - Top level menu links with indicator that scrolls to focus
+
site-print-button
+ - print button with support for 4 levels of printing the site
+
site-rss-button
+ - a button that displays a link (opened in a new window) to get the RSS feed in RSS 2.0 or Atom 1.0 format (also applies correct semantic values for bots to discover)
+
site-title
+ - a link to the homepage of the site wrapped in an h1 tag
+
+
+
+
See the elements themselves for more details API examples and check out our themes as we leverage them heavily across the core themes.
+
A word about style
+
We use CSS variables to style all the bits inside of our custom elements. So if you don't like the styling, look at the CSS variables we make available and style away. The "Learn 2 theme"
+
+
+ is a great example implementing multiple levels of styling against multiple HAXcms site elements. You can always you know, go back and reread the CSS variables section
+.
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/core-elements/query-examples/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/core-elements/query-examples/index.html
new file mode 100644
index 0000000..f0db035
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/core-elements/query-examples/index.html
@@ -0,0 +1,108 @@
+Hold up there. You didn't cover any of the query tags in that last section!
+
+
Ok ok, here's the deal. Queries are so important that they needed their own section. Calm down Dwight we'll handle that now.The site-
+
+
+
+ query elements are incredibly powerful aspects of HAXcms theming that deserve their own section anyway.
+Give me all of the pages who have a tag "Funny"
+
+
When it's useful
+
Always. This is by far the most powerful element in our library. It can query the site structure and effectively return anything, anywhere that matches the criteria. It is for exact criteria matching though so you won't be getting children of page X unless you specifically requested them.
+
This is great for getting things like getting all the pages that don't have parents (top level items) which is exactly how the site-top-menu
+
+ tag does it in conjunction with a dom-repeat tag (in that example).
+
Caveats
+
This doesn't render anything by itself
+
+
+
You have to then know how to do a two way template bind (Polymer convention looking like {{result}}
+
+or know how to use javascript in order to bind the results to visual output
+Give me all child pages
+that are 2 to 4 levels deep.
+
+
Delivered results
+What type of query is this leveraging again?
+ site-query-menu-slice
+
+
Dynamic leveling
+
The dynamic leveling flag would allow you to create a query that analyzes the current active item (as example). And then say "Always give me 2-3 levels below this". In that instance you've got a dynamic sub-set of children being returned.
+
When it's useful
+
This can be useful for a block that always shows the children of the current page in a documentation site.
A site render query attempts to standardize the practice of wiring site-query up to something visual. It requires you supply something visual to get going and has the unfortunate limitation though that what you render must not be dynamic in nature.
When you have a static set of items you want to query once and have it be dynamic based on site infrastructure yet not be changing dynamically during site view.
+
Possible usage
+
As we haven't rolled this into any themes at the time, this could be useful for placing a "latest posts" block or "upcoming events" block. Anything that's dynamic based on the data being passed in but yet unchanging once it's loaded. Think of this as a simple "views" construct if you are from the Drupal worldview.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/css-vars/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/css-vars/index.html
new file mode 100644
index 0000000..62daeb9
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/css-vars/index.html
@@ -0,0 +1,48 @@
+
CSS can be modified via CSS variables
+. CSS variables create a happy middle ground between the constraints of Shadow DOM (namely that styles are fully encapsulated) and designers wanting flexibility and control over design. We leverage CSS variables heavily in our template layer to allow you to "skin" just about any theme we have already.
+
A note about @apply
+
Unlike normal css variables, Polymer (the library we build our theme layer on) supports a convention for CSS variables that operate a bit more like Saas mixins. You can write blocks of code like @apply --my-variable-blob;
+ which will then allow someone to mix in and apply whatever valid CSS attributes they want at that level. You can see several implemented below (both CSS variables and @apply blocks).
+
Example
+
This is an example from the haxcms-basic-theme
+which forms a clean baseline for most sites.
This tells HAXcms UI that you can now select the theme (but don't yet, it won't be valid)
+
Local development workflow during theme development
+
We use polymer cli to serve up and work on web components locally and while you don't have to, it's recommended as part of the WCFactory workflow.
+
Make a new site in the HAXcms UI
+
+
Go to _sites/mynewsite and run polymer serve --npm --open --entrypoint dist/dev.html
+
+
+
Adjust the URL that opens to only be the IP address with no path after it
+
You'll see your site open up for local development work, which will be leveraging any assets referenced in your node_modules directory at the HAXcms project root.
+
To add / install new assets run yarn (or npm) add @what/ever-you-want --save
+, just like you would any other project you work on in FE dev
+
edit your site's site.json manually to update the theme to point to the theme location your actively working on
+
Develop away until it is to your liking
+
+
Shipping the theme
+
To ship the theme, you'll need to do a polymer build routine
Delete the symlink and replace it with your build directory
+
Now you can publish via the UI so long as you do not leverage a CDN
+
+
The future
+
Admittedly, the full on custom theme / web component development workflow is rough. It's hard to maintain a built copy in a modular system without tooling. In the future we plan on having tooling workflows built directly into WCFactory that allow you to streamline the development and creation of HAXcms themes.
+
Current limitations
+
You can't leverage existing CDNs (like webcomponents.psu.edu and whatever else is out there) that are pegged to the HAXcms project's source. You'll be creating a custom theme which then creates a custom build in effect so you'll want to ensure that you have some place that you can host the assets in order to power your site.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/index.html
new file mode 100644
index 0000000..2494039
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/index.html
@@ -0,0 +1,337 @@
+
There are multiple ways to "theme" in HAXcms that align with the skillsets of the person doing the theme development. Know web components? Cool. Know basic CSS and HTML? Cool. Want to build something complete from the ground up? Go for it. We've got a robust templating engine to unleash your creativity.
+
We've also written the wcfactory
+
+
+
+
+ tooling in order to improve the development and management of web component libraries at scale (see LRNWebComponents
+
+
+
+
+ for our element portfolio). This isn't required but if you fancy yourself a "modern front end developer" this might be for you.
+
Watch a video
+
These are some deep dives into the HAXcms theme layer. They are great for seeing what's possible, how we go about making new themes. Now the store and state management works internally and how we try to always keep state away from designers.
+
+ `;
+ }
+
+ // properties available to the custom element for data binding
+ static get properties() {
+ return {};
+ }
+
+ /**
+ * Store the tag name to make it easier to obtain directly.
+ * @notice function name must be here for tooling to operate correctly
+ */
+ static get tag() {
+ return "learn-two-theme";
+ }
+ /**
+ * Mix in an opened status
+ */
+ static get properties() {
+ let props = super.properties;
+ props.opened = {
+ type: Boolean,
+ reflectToAttribute: true
+ };
+ return props;
+ }
+ toggleDrawer(e) {
+ this.$.drawer.toggle();
+ }
+}
+window.customElements.define(LearnTwoTheme.tag, LearnTwoTheme);
+export { LearnTwoTheme };
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/skin-a-site/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/skin-a-site/index.html
new file mode 100644
index 0000000..0e82504
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/skin-a-site/index.html
@@ -0,0 +1,12 @@
+
Theme skinning is the easiest way to build a decent looking theme in HAXcms. This method is geared toward people that know CSS and HTML but can't get into the weeds of web components or javascript.
+
Workflow
+
Make a new site in the HAXcms UI
+
+
Select "Custom theme" as your theme
+
In the file system go to _sites/mynewsite
+/theme
+
Edit theme.html to modify the structure
+
Edit theme.css to modify the design
+
+
This is the easiest way to skin HAXcms to your liking. It's able to ship and work in CDNs and is the minimal barrier to entry for those used to seeing HTML and CSS files that they can touch and see the change. It requires no tooling to utilize either!
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/web-components/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/web-components/index.html
new file mode 100644
index 0000000..9f0823c
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/theming/web-components/index.html
@@ -0,0 +1,60 @@
+
Do you know full on web component development? Well, you can build a new theme from scratch. The best way to learn is by picking a part some of our examples. For this we'll analyze the haxcms-slide-theme
+
+.
As you can see this theme imports a few basic components helpful in the development of most themes. First we import PolymerElement and the HAXCMSTheme mix-in from our theme wiring library. Theme wiring provides a basis for wiring any custom element into the state management of HAXcms, typically without having to deal with any concepts of state!
+
Mix-ins
+ class HAXCMSSlideTheme extends HAXCMSTheme(PolymerElement) {
+
+
Next we get the mix-in statement. Note how HAXCMSTheme wraps the PolymerElement class, thereby giving us a mix of the two together.
+
HAXCMSTheme mix-in class
+
You can learn more about what the mix-in class provides by digging into the HAXCMSThemeWiring.js
+
+ class. This class bridges the HAXcms store (written in mobx) with the design layer. This way you can leverage anything in the store by writing the polymer convention for referencing a data bound variable in the template.
That last line with activeItemFields is part of the raw power under the hood of this approach. You can use HAXcms to create field definitions (in HAXschema
+
+) that then extend the capabilities of your pages.
+
Required CSS
+
There is one small required block of CSS when doing web component / theme development for HAXcms. It is the following:
+ /**
+ * Hide the slotted content during edit mode. This must be here to work.
+ */
+:host([edit-mode]) #slot {
+ display: none;
+}
+
+
This helps ensure that when your user clicks the edit button that they see the HAXeditor as opposed to the body of content they are currently working with. Then when they hit save, the HAXeditor sends the content to the backend which then updates the front end and they see the changes. This CSS ensures that it isn't visible during editing.
+
Required HTML
+
+
+
+
+
Related to the CSS, the following block of HTML must appear in your template somewhere (or in the case of simple-blog
+, an element leveraged by your theme). You can make this look like whatever you want beyond this but this ensures the HAXeditor can correctly target and be integrated using the HAXCMSTheme mix-in. There are ways to position and reposition the HAXeditor dynamically that will not be covered here but can be seen in simple-blog
+.
+
From there, design away. Write whatever CSS and HTML and JS you want! The example themes referenced in our docs all provide blue prints for different ways of leveraging our template system.
+
Next we'll discuss our Core template elements which you'll want to leverage in order to make theme development even cleaner!
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/troubleshooting/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/troubleshooting/index.html
new file mode 100644
index 0000000..d9fda21
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/haxcms/troubleshooting/index.html
@@ -0,0 +1,13 @@
+
These are some common issues / resolutions in HAXcms related to installation, publishing, etc.
+
I installed HAXcms and forgot my password
+
Your username and password can be found in _config/config.php on the server (assuming local development)
+
I clicked login and nothing happened and now I'm locked out.
+
Clear your browser cache. A cookie is set that might be invalid.
+
+
Open a new browser and try to login again
+
+
I clicked publish and nothing happened
+
Publishing can take up to a minute or so at times since it's creating a commit, rewriting files and then the front end is waiting on the push to github before it triggers a successful response.
+
If it did fail to publish, you might not have git setup. Click the gear icon on the dashboard (site listing) and ensure you've setup github / git integration correctly.
+
+
Realize that everything is just a file and that our json outline schema is very easy to read. So if there's an issue with something related to publishing, check _sites/mysite/site.json for publishing, then _config/config.json. All settings and variables cascade in this way. Settings are stored globally, then replicated locally to allow them to be pealed off and more easily imported / exported into other setups.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/index.html
new file mode 100644
index 0000000..a2cb6c4
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/index.html
@@ -0,0 +1,10 @@
+
HAX may seem complex, but it's built on a series of standards that will never
+
+ break. As a result of the complexity of these standards, there are things you should know prior to digging into HAXeditor core or any of its related Solutions
+
+
Watch us build!
+
Many members of the core development team participate in a show called HAX camp Uncode
+.
There are several technologies you should learn about if your going to understand how HAX is built (and how to extend it)
+
JSON Schema
+
Learn more about JSON Schema
+
+
+
+ on the official website for that standard. JSON Schema provides a way of describing the data contained in a JSON blob so that a form can be built to modify those values. HAX uses this extensively via a tag called eco-json-schema-object
+
+
+
+ and related tags, to turn any json schema definition into a fully two-way data binded form.
HAX schema
+
+
+
+
+ is an abstraction that sits on top of JSON Schema in order to provide forms for updating values in your HAX wired elements. If you wanted to extend the types of input fields that HAX has access to then learning JSON Schema would be the best place to start!
+
JSON Outline Schema
+
+
+JSON Outline Schema
+ is a standard way of expressing and storing the relation between objects. It gives you a simple way of linking data together to form an outline of related concepts / entities. Here is an example of a JSON Outline schema entity:
This gives you enough data to visually represent this information in an outline form. Let's look at a larger example of 3 items related together which would express nested hierarchy in a consistent way:
+ {
+ "id": "123-ddc-d321d-d2e-dd2",
+ "title": "My outline",
+ "author": "LRNWebComponents",
+ "description": "A series of related material to teach you about the structure of content.",
+ "license": "by-sa",
+ "metadata": {},
+ "items": [
+ {
+ "id": "item-1",
+ "indent": "1",
+ "location": "outline.html",
+ "order": "0",
+ "parent": null,
+ "title": "Outline",
+ "description": "A description at a glance of this item potentially",
+ "metadata": {
+ "icon": "icons:view-quilt"
+ }
+ },
+ {
+ "id": "item-2",
+ "indent": "2",
+ "location": "introduction.html",
+ "order": "0",
+ "parent": "item-1",
+ "title": "Introduction to outlines",
+ "description": "A description at a glance of this item potentially",
+ "metadata": {}
+ },
+ {
+ "id": "item-3",
+ "indent": "2",
+ "location": "files/a-2nd-page-item.html",
+ "order": "1",
+ "parent": "item-1",
+ "title": "An item in an outline",
+ "description": "A description at a glance of this item potentially",
+ "metadata": {}
+ }
+ ]
+}
+
+
Let's break down these properties and why we have them in the schema:
+
Higher order schema
+
`title
+` - name of the work as a whole
+
`author
+` - who created this work
+
`description
+` - short description of the work to explain it
+
`license
+` - a valid license short hard for the work as a whole
+
`metadata
+` - area to storing any additional details about the work. This has no standard structure but could be used for relating work if needed.
+
`id
+` - a unique identifier for this work in the universe of all works
+
`items
+` - an array of schema elements which contain the pages / leaves of the structure of this outline
+
+
Leaf / page element within the structure
+
`id
+` - the UUID / unique ID of the element
+
`indent
+` - How far to visually position the item inward. You could have something be the parent as a page but visually only be indented 2 levels
+
`location
+` - a file or resource that references the related data to display here
+
`order
+` - a weighting as to the order relative to other items that match this parent level
+
`parent
+` - a UUID / unique ID of the element this is a child of
+
`title
+` - title of this item to display
+
`description
+` - short description of the item to explain it
+
`metadata
+` - a container for any additional details of information you need to ship. This has no standard structure
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/ux-concepts/add/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/ux-concepts/add/index.html
new file mode 100644
index 0000000..9808ad6
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/ux-concepts/add/index.html
@@ -0,0 +1,4 @@
+
Add Content
+ is how you create and add complex blocks to the HAX page editor. These blocks can be variable based on what you chose to include (see appstore
+) but ultimately are just adding web components to the editable area of the page. These web components then tell HAX how to surface an editing interface which then just writes to the properties, attributes, and slots of the element in the editable area of the page.
+
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/ux-concepts/find/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/ux-concepts/find/index.html
new file mode 100644
index 0000000..544941f
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/ux-concepts/find/index.html
@@ -0,0 +1,3 @@
+
Search
+ is a data interoperability layer to HAX where web components data binding shines. Search is able to stitch remote data together with local web components in order to streamline workflows. You can search any source directly in context and then drag and drop or click the item in question to add it to the page your building instantly.
+
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/ux-concepts/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/ux-concepts/index.html
new file mode 100644
index 0000000..ef95f78
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/ux-concepts/index.html
@@ -0,0 +1,6 @@
+
The HAX UI can be broken down into three major production concepts. Content authors are either:
+
Adding something they already have
+
Editing the Settings of the activated element on the page
+
Search for media from remote sources
+
Add in a Template or predefined layout into the page
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/ux-concepts/make/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/ux-concepts/make/index.html
new file mode 100644
index 0000000..65dcac9
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/documentation-1/ux-concepts/make/index.html
@@ -0,0 +1,61 @@
+
Make allows you to create things using the Gizmos that the editor knows about. Make typically will involve media pieces but could also just be a treatment to text you'd like to apply. Some examples of things you can make with the default editor settings:
+
Wikipedia article - reference a wikipedia article and cite it just by entering the name of the article
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ - Provide a pop up for additional information about a word
+
+
+
+
+
Math
+ - So that you can write things like e=mc^2
+
+
+ which is WAY more difficult then you'd ever expect.
+
+
+
+
+
+
+
+
+
+
can be used to wire metadata into text elements in order to provide additional details for search engines
+
+
+
+
+
+
+
+
Or hey, make a QR code, whatever you want. These are just some of the things that come out of the box
+
+
+
+
+
+
+
+
+
+
Using the make menu
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/f-a-q--1/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/f-a-q--1/index.html
new file mode 100644
index 0000000..1772e15
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/f-a-q--1/index.html
@@ -0,0 +1,620 @@
+
Are web components legit? Is this really possible?
+
Yes. Web components effectively turn the HTML of a site into a consistent API. HAXeditor
+
+
+ leverages this approach and standardizes its usage in order to supply an incredible amount of functionality in the browser. We do what the vast majority of CMS provide prior to interfacing with a server. Just HTML files and a h-a-x
+
+
+
+
+
+ tag to understand how to modify content.
+
What's Browser support like?
+
Web components
+
+
+
+
+
+
+
+
+
+
+ can be compiled to support IE11 and work in all major browsers natively
+
+
+
+
+
+
+
+
+
+
+
+
+
HAXeditor
+
+
+
+
+
+
+
+
+
+
+ is supported by IE 11
+
+
+
+
+
+
+
+
+
+
+ and all major browsers, though we mostly test "evergreen" browsers.
+
+
+
+
+
+
+
+
+
+
+
+
HAXcms
+
+ support is broad but a bit fragmented to optimize the experience per each device. From lowest to highest quality (numbers based on global traffic data in aggregate
+
+, last updated July 2019
+
+)
+
+
IE (11) / Safari (9.1) / older - no JS / frame based site
+
+ (~ 3%)
+
+
Edge (18 and below) - watered down UI
+
+ (~ 2.2%)
No. HAX is written such that the Appstore Specification
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ is defining the elements that are available in this site and other demos. Leveraging the autoloader
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ piece of the spec, you can tell HAX which tags to load. The web component definitions and schema can be kept separate as desired (useful in CMS with editorial workflows / permissions scenarios).
+
Do these elements require HAX to operate?
+
No! HAX modifies HTML inside of itself and then exports back to HTML. This means that as long as the web components on your site have definitions, HAX no longer is required to render them!
+
HAX is effectively writing the same HTML you could have by hand. Web components help make it semantic but also ensure that functionality lives with "the platform"; in this case, the platform being the browser. So long as the definitions of the component are in scope of the page, the element will unpack correctly HAX or otherwise.
+
How does this compare to the WordPress Gutenberg plugin?
+
In terms of mission and what they attempt to provide, a click and build website tonight, no-or-minimal-code solution for the masses... they are the same. They both seek to reduce barriers to entry in web expression. HAX takes some critical differences in philosophy of design to Gutenberg both in technical implementation and goals for the open web.
+
HAX seeks to improve web publishing for all systems, HAXcms or otherwise. HAXcms (which this site is constructed in) is but a tiny fraction of the web and we want to empower anyone to improve self expression. We want to improve privacy, self sovereignty, and the individuality of all peoples on the web. HAX seeks to eliminate technical barriers to production, integration and delivery of material on the internet; all of it, not just the expensive CMS part of it. We want to hax-the-web, hence this domain name.
+
Some larger points of different are highlighted below
+
HAX is platform independent - We seek to improve the web and all that it touches, platform agnostic. Gutenberg is highly focused on the needs of WordPress and improving the content authoring experience for WordPress users.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Gutenberg embeds its blocks layer with the authoring nuance such that all operations can be wildly different per block. For example, a tabbed list of items may have a "add another" button inline with the block. HAX believes that the editing experience across complex elements must be delivered by the HAXeditor, not the element or block level. This illustrates itself in the UX as users selecting an element to work on and then interfacing with it the same way they would any other element. We feel that this will reduce long term barriers to adoption by end-users and training through a lack of cognitive load increase per element.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Gutenberg sees you "add" things as its primary construction method. If you need to upload media that's a separately integrated process, highly dependent on WordPress to deliver. HAX boils content creation operations down into the mental model of the author. Authors either say "I need to Add
+
+
+
+
+
+
+
+
+
+
+
+
+
+ something" (Add menu), "I need to to Find
+
+
+
+
+
+
+
+
+
+
+
+
+
+ something" (Find menu), "I need to Make
+
+
+
+
+
+
+
+
+
+
+
+
+
+ something" (Make / create menu), "I need to Layout
+
+
+
+
+
+
+
+
+
+
+
+
+
+ something" (Blox / Layout menu) or that they want to remix something from a Template
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (Stax / Template menu).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The Gutenberg blocks system produces react components which are specific to the logistics of WordPress. The elements produced for HAX work in and out of HAX capable systems
+
+
+. We believe in extending the broader capabilities of the web first and HAX second in order to reduce duplication of efforts globally and improves resource sharing.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Gutenberg is written in React, effectively requiring all plugins and block components be written in React. HAX is written in Web components leveraging a mix of "VanillaJS", LitElement and PolymerElement constructed elements. You can use any web component compatible library
+
+
+
+
+
+ in order to produce elements for HAX. While not limited to, here are some popular examples that could natively talk to HAX:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
VanillaJS following the web component specification
HAX is the brain child of the ELMS:LN team at Pennsylvania State University
+
+
+
+
+
+
+
+
+
+
+
+
+. HAX is the authoring solution originally created to power ELMS:LN
+
+
+
+
+
+
+
+
+
+
+
+
+ and other instructional innovations and was quickly realized for its potential to transform web publishing.
+
The original core development / evangelist team on HAX in its infancy (an idea conceived in 2016, experimented in 2017, manifested in 2018, actualized in 2019):
+
Bryan Ollendyke (@btopro
+
+
+) - Project lead Developer
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/f-a-q-1/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/f-a-q-1/index.html
new file mode 100644
index 0000000..f62d578
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/f-a-q-1/index.html
@@ -0,0 +1,92 @@
+
Are web components ready for prime time?
+
Yes. Web components effectively turn the HTML of a site into a consistent API. HAXeditor
+ leverages this approach and standardizes its usage in order to supply an incredible amount of functionality in the browser. We do what the vast majority of CMS provide prior to interfacing with a server. Just HTML files and a h-a-x
+
+ tag to understand how to modify content.
+
What's Browser support like?
+
Web components
+ can be compiled to support IE11 and work in all major browsers natively
+
HAXeditor
+ is supported by IE 11
+ and all major browsers, though we mostly test "evergreen" browsers.
+
HAXcms
+ support is broad but a bit fragmented to optimize the experience per each device. From lowest to highest quality (numbers based on global traffic data in aggregate
+, last updated Aug 2020
+)
+
IE (11) / Safari (9.1) / older - no JS / frame based site
+ (~ 1.8%) ES5 / fallback text
+
Edge (18 and below) - watered down UI
+ (~ .7%) ES5
Evergreen / Modern browsers (~ 96.5%) - Native ES6!
+
+
+
+
Do I have to use the elements HAXeditor supplies?
+
No. HAX is written such that the Appstore Specification
+ is defining the elements that are available in this site and other demos. Leveraging the autoloader
+ piece of the spec, you can tell HAX which tags to load. The web component definitions and schema can be kept separate as desired (useful in CMS with editorial workflows / permissions scenarios).
+
Do these elements require HAX to operate?
+
No! HAX modifies HTML inside of itself and then exports back to HTML. This means that as long as the web components on your site have definitions, HAX no longer is required to render them!
+
HAX is effectively writing the same HTML you could have by hand. Web components help make it semantic but also ensure that functionality lives with "the platform"; in this case, the platform being the browser. So long as the definitions of the component are in scope of the page, the element will unpack correctly HAX or otherwise.
+
How does this compare to the WordPress Gutenberg plugin?
+
In terms of mission and what they attempt to provide, a click and build website tonight, no-or-minimal-code solution for the masses... they are the same. They both seek to reduce barriers to entry in web expression. HAX takes some critical differences in philosophy of design to Gutenberg both in technical implementation and goals for the open web.
+
HAX seeks to improve web publishing for all systems, HAXcms or otherwise. HAXcms (which this site is constructed in) is but a tiny fraction of the web and we want to empower anyone to improve self expression. We want to improve privacy, self sovereignty, and the individuality of all peoples on the web. HAX seeks to eliminate technical barriers to production, integration and delivery of material on the internet; all of it, not just the expensive CMS part of it. We want to hax-the-web, hence this domain name.
+
Some larger points of different are highlighted below
+
HAX is platform independent - We seek to improve the web and all that it touches, platform agnostic. Gutenberg is highly focused on the needs of WordPress and improving the content authoring experience for WordPress users.
+
Gutenberg embeds its blocks layer with the authoring nuance such that all operations can be wildly different per block. For example, a tabbed list of items may have a "add another" button inline with the block. HAX believes that the editing experience across complex elements must be delivered by the HAXeditor, not the element or block level. This illustrates itself in the UX as users selecting an element to work on and then interfacing with it the same way they would any other element. We feel that this will reduce long term barriers to adoption by end-users and training through a lack of cognitive load increase per element.
+
Gutenberg sees you "add" things as its primary construction method. If you need to upload media that's a separately integrated process, highly dependent on WordPress to deliver. HAX boils content creation operations down into the mental model of the author. Authors either say "I need to Add
+ something" (Add menu), "I need to to Find
+ something" (Find menu), "I need to Make
+ something" (Make / create menu), "I need to Layout
+ something" (Blox / Layout menu) or that they want to remix something from a Template
+ (Stax / Template menu).
+
The Gutenberg blocks system produces react components which are specific to the logistics of WordPress. The elements produced for HAX work in and out of HAX capable systems
+. We believe in extending the broader capabilities of the web first and HAX second in order to reduce duplication of efforts globally and improves resource sharing.
+
Gutenberg is written in React, effectively requiring all plugins and block components be written in React. HAX is written in Web components leveraging a mix of "VanillaJS", LitElement and PolymerElement constructed elements. You can use any web component compatible library
+
+ in order to produce elements for HAX. While not limited to, here are some popular examples that could natively talk to HAX:
+
VanillaJS following the web component specification
HAX is the brain child of the ELMS:LN team at Pennsylvania State University
+. HAX is the authoring solution originally created to power ELMS:LN
+ and other instructional innovations and was quickly realized for its potential to transform web publishing.
+
The original core development / evangelist team on HAX in its infancy (an idea conceived in 2016, experimented in 2017, manifested in 2018, actualized in 2019):
+
Bryan Ollendyke (@btopro
+) - Project lead Developer
There is nothing we can't do together. Help us build a better web together!
+
Ex uno Plures
diff --git "a/github-pages-deploy-action-temp-deployment-folder/pages/f.a.q\357\200\251/index.html" "b/github-pages-deploy-action-temp-deployment-folder/pages/f.a.q\357\200\251/index.html"
new file mode 100644
index 0000000..0a31f5d
--- /dev/null
+++ "b/github-pages-deploy-action-temp-deployment-folder/pages/f.a.q\357\200\251/index.html"
@@ -0,0 +1 @@
+
My great new content!
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/get-involved--1/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/get-involved--1/index.html
new file mode 100644
index 0000000..18fd63d
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/get-involved--1/index.html
@@ -0,0 +1,131 @@
+
Great! Here's some of the best ways for organizations to try "HAX" and get involved in the project.
+
Reach out to any of the members of the core project team or who's listed at the bottom of the FAQ
+
+
+. We're happy to do conference calls to forge partnerships especially around HAX as a Learning management or OER production solution though it has implications for any public site!
Bring this website to developers in your organization or other code junkies and tell them to explore
+
Host a HAX camp / meet up (ask for more details)
+
+
+
+
+
+
HAX makes up multiple projects across hundreds of web components and various other repos. It can be a bit overwhelming but we want you to imagine something... Imagine being a developer on HAX.
+
+
Because all it takes to get involved in HAX is, that's right, showing up in our repos and getting involved! Yes you too can be just as special and meme-able as we are!
+
All things HAX are powered by people just like you, wanting to make the web a better, more accessible, easier to use, less painful to develop for... place.Help us make that a reality and you too could have Snoop Dawg escorting you over to a brand new car*
Great! Here's some of the best ways for organizations to try "HAX" and get involved in the project.
+
Reach out to any of the members of the core project team on our slack
+. We're happy to do conference calls to forge partnerships especially around HAX or OER production solution though it has implications for any public site!
HAX makes up multiple projects across hundreds of web components and various other repos. It can be a bit overwhelming but we want you to imagine something... Imagine being a developer on HAX.
+
+
Step 'ight up
+
+
urz te next contrib
+
Because all it takes to get involved in HAX is, that's right, showing up in our repos and getting involved! Yes you too can be just as meme-able as we are!
+
All things HAX are powered by people just like you, wanting to make the web a better, more accessible, easier to use, less painful to develop for... place.Help us make that a reality and you too could have Snoop Dawg escorting you over to a brand new car*
*Claims vs reality may vary. Just help us out and we'll see where it goes..
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/gizmo/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/gizmo/index.html
new file mode 100644
index 0000000..5562706
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/gizmo/index.html
@@ -0,0 +1,2 @@
+
A Gizmo is an advanced piece of media or interactivity placed on the page. At a technical level, it is a web component, but to your users and content readers it's an advanced piece of functionality helping them complete a task. Maybe they want to embed an article from Wikipedia, or create a gorgeous, responsive video. How would they do that without advanced code knowledge?
+
Gizmo's ensure that your users have a consistent visual presentation and authoring experience across a myriad of complex functionality. Any web component can be wired to support HAX.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/haxcms/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/haxcms/index.html
new file mode 100644
index 0000000..0a31f5d
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/haxcms/index.html
@@ -0,0 +1 @@
+
My great new content!
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/haxdesktop/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/haxdesktop/index.html
new file mode 100644
index 0000000..ef263ef
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/haxdesktop/index.html
@@ -0,0 +1 @@
+
HAXdesktop is the same great experience of HAXcms but provided as a stand alone desktop app. It builds out content that is in a forever format just like HAX, and puts it in version control, but with the simplicity of using a desktop app.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/home/roadmap/elms-ln/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/home/roadmap/elms-ln/index.html
new file mode 100644
index 0000000..13d35f6
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/home/roadmap/elms-ln/index.html
@@ -0,0 +1 @@
+
Ex uno Plures
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/home/roadmap/haxcms/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/home/roadmap/haxcms/index.html
new file mode 100644
index 0000000..13d35f6
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/home/roadmap/haxcms/index.html
@@ -0,0 +1 @@
+
Ex uno Plures
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/home/roadmap/haxeditor/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/home/roadmap/haxeditor/index.html
new file mode 100644
index 0000000..13d35f6
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/home/roadmap/haxeditor/index.html
@@ -0,0 +1 @@
+
Ex uno Plures
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/home/roadmap/haxiam/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/home/roadmap/haxiam/index.html
new file mode 100644
index 0000000..13d35f6
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/home/roadmap/haxiam/index.html
@@ -0,0 +1 @@
+
Ex uno Plures
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/backdropcms/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/backdropcms/index.html
new file mode 100644
index 0000000..b4d1e19
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/backdropcms/index.html
@@ -0,0 +1,13 @@
+
+
HAXeditor keeps so much functionality on the front-end that there's really very little tying it to..well.. anything. As a result, HAX is easy to integrate into systems that currently have WYSIWYG capabilities.
+
All integrations effectively boil down to four things
+
End point to load content
+
+
+
End point to save content
+
+
+
End point to load the appstore specification
+
+
+
End point to upload files (optional)
+
+
+
+
Content filtering
+
Because web components are valid HTML tags your system may accept them when saved into your database but you may also be doing tag filtering or other XSS sanitization prior to storage. If you do process prior to storage (and you should) but it strips the web components out of the mark up, you'll need to add some filtering / white-listing capabilities to your system in order to ensure that the web component html tags pass through that should.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/creating-new-ones/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/creating-new-ones/index.html
new file mode 100644
index 0000000..b19cfdc
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/creating-new-ones/index.html
@@ -0,0 +1,49 @@
+
The main piece to our integrations is wrapped up in something we call "The magic script". The magic script is a standard way of dynamically discovering and importing the definitions of web components on the fly. We leverage this approach in all of our HAX platform integrations because it simplifies the initial question of how to teach the CMS / app about web components.
+
There's an entire Dev.to Series about our integration
+ methodology if you'd like more detail about why we do this or how it works. The integration methodology is a stand alone repo you can use for custom builds, found in our Unbundled Web components repo
+. Below is what is recommended if you want to leverage our CDN and wide array of elements we already include in our builds.
+
+<script></script>
+
This script will load off of the Penn State CDN and automatically hydrate the web components discovered on the page, including h-a-x and the HAX family of tags.
+
+
HAX All the Things
+ repo has every integration we support as well as some examples of including HAX in Angular and other frameworks (see platform folder in that repo). For a common CMS integration example see this part of the WordPress plugin (code below)
+
WordPress integration example
+(function ($) {
+ $(document).ready(function () {
+ // HAX the Press
+ var haxThePress = document.createElement('wysiwyg-hax');
+ var temp = document.createElement('template');
+ // target the TinyMCE area
+ const content = document.querySelector('textarea#content');
+ // replicate what it was providing to the light DOM
+ haxThePress.fieldClass = 'wp-editor-area';
+ haxThePress.fieldName = 'content';
+ haxThePress.fieldId = 'content';
+ haxThePress.openDefault = true;
+ haxThePress.elementAlign = 'left';
+ haxThePress.saveButtonSelector = document.querySelector('input[type="submit"]#publish');
+ if (window.haxThePressConnector) {
+ haxThePress.appStoreConnection = window.haxThePressConnector;
+ }
+ // set the template tag to the content previously in the textarea
+ temp.innerHTML = content.value;
+ // append the template tag into the wysiwyg
+ haxThePress.appendChild(temp.cloneNode(true));
+ // insert the field exactly where the tinymce was
+ content.parentNode.insertBefore(haxThePress, content);
+ // HAX the web
+ content.parentNode.removeChild(content);
+ });
+})(jQuery);
+
In this example we can see that WordPress is able to integrate with the wysiwyg-hax tag by using jQuery to correctly time when the WordPress loaded DOM is ready, then replacing the "content" area (a textarea with id="content") at run time with our light-dom capable wysiwyg-hax tag.
+
General integration advisement
+
HAXeditor keeps so much functionality on the front-end that there's really very little tying it to..well.. anything. As a result, HAX is easy to integrate into systems that currently have WYSIWYG capabilities.
+
All integrations effectively boil down to four things
+
End point to load content
+
End point to save content
+
End point to load the appstore specification
+
End point to upload files (optional)
+
+
Content filtering
+
Because web components are valid HTML tags your system may accept them when saved into your database but you may also be doing tag filtering or other XSS sanitation prior to storage. If you do process prior to storage (and you should) but it strips the web components out of the mark up, you'll need to add some filtering / white-listing capabilities to your system in order to ensure that the web component html tags pass through that should.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/drupal/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/drupal/index.html
new file mode 100644
index 0000000..66f4488
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/drupal/index.html
@@ -0,0 +1,53 @@
+
Try on SimplyTest.me
+
Try HAX on Simplytest me in a few steps without needing to install anything
Log in, go to Administration -> Configuration -> Content Authoring -> Input formats / filters
+
Make sure that Filter HTML tags is disabled
+
+
+
+
+
+
CDN all the things
+
+
+
+
Garland...
+
+
Getting HAX setup in Drupal CMS
+
HAX works with Drupal 8, 7 and all the way back to 6 (mostly to prove a point). While the install routines are largely the same make sure you follow the directions for your flavor of Drupal if it has any branching steps. Drupal 8 is the easiest to get setup while 7 and 6 require some additional modules to get going.
Be aware that the Drupal 8 and 9 version of HAX does not
+
+ require the web components module while Drupal 7 does
+
+
+
Download the module for your platform and follow the directions found in the README.md
+
+
Drupal 7 have these files in the CopyThisStuff
+ folder found in the web components module
+ so make sure you get that!
+
+
+
Enable the HAX module
+
+
Web components module too if in Drupal 7
+
+
+
+
Go to a node in your site, you should see a tab that says "Block editor mode"
+
+
Enjoy HAX'ing your Drupal site!
+
+
+
Special note on Drupal 7
+
In order to get the upload capabilities in Drupal 7 you'll need to download the File Entity
+
+ and RESTws
+
+ modules as well. We've created a "HAX Common" feature using the Features module which will help with the dependencies that are common in sites using HAX.
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/gravcms/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/gravcms/index.html
new file mode 100644
index 0000000..cbe94da
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/gravcms/index.html
@@ -0,0 +1,12 @@
+
There's two plugins needed to run HAX on GravCMS - The web components and HAX plugins.
+
Web components plugin
+
+ - provides the build routine and installation instructions
Enable these and then HAX will show up when you go to edit / add a page. Beware there can be conflicts between HAX and the markdown parsing capabilities of Grav so you may need to disable the markdown parser on pages that use HAX.
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/index.html
new file mode 100644
index 0000000..4bc64a9
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/index.html
@@ -0,0 +1,12 @@
+
HAX provides plenty of ways to integrate into the platforms you already use! Here are some of the plugins and integrations below this heading.
HAX bookmarklet
+ (allows injecting HAX into any website, see below for details)
+
Web-component-izer
+ - Inject and clip parts of web sites (good for exploring the web component ecosystem we ride on)
+
Electron Apps - once ours reaches maturity you'll know!
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/wordpress/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/wordpress/index.html
new file mode 100644
index 0000000..fa845f0
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/integrations-1/wordpress/index.html
@@ -0,0 +1,7 @@
+
We support WordPress too! In order to use HAX though you'll want to replace the Gutenberg editor. The following steps will help you get it up and running.
+
Get the Classic Editor
+. This plugin helps restore WordPress back to what you wanted
Break free of platform specific assets and content
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/item-44cc230b-07db-442a-90cf-687e2d089a5d/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/item-44cc230b-07db-442a-90cf-687e2d089a5d/index.html
new file mode 100644
index 0000000..7eab902
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/item-44cc230b-07db-442a-90cf-687e2d089a5d/index.html
@@ -0,0 +1,120 @@
+
Elements can integrate deeply into HAX state management using what we call "hax hooks". By supplying a method on your web component like
+ haxHooks()
+ you are magically able to tap into different life-cycle steps within the HAX editor.
+
+
Because of the simplicity and power of
+ haxHooks
+ this may not be an exhaustive list and
+
+ the internal code documentation on this should be consulted
+ (or open an issue to ensure we document a missing hook!). You can search the lrnwebcomponents monorepo for usage of haxHooks
+ in order to discover additional implementations beyond what is pointed to below.
+ This is a basic example in which each of the strings you'd then implement as their own async
+ callbacks. async
+ / await
+ allows HAX to safely defer to your element to do whatever it wants to the DOM / internal structure of that callback, without disrupting element activation or conversion of DOM structure to HAX Element Schema, what it uses to virtualize the body for sanitation
+ purposes at the time of save / adding new things to the page.
+
The most powerful hook in haxHooks. This fires whenever an element is read in via the appStore and it's definition loaded for use. This hook supplies an instance of the HAXStore which is the internal state management of HAX (written in MobX). You can use this object to do whatever you want to HAX. While seemingly too powerful, here are some examples of past things to leverage this super power for good
+
+
+ code-sample
+ - the code-sample tag uses this hook in order to inject additional shortcut logic. If the tag is supplied, things like
+ ```js
+ will convert to a JS based code-sample. It also hijacks the baked in support for
+ ```
+ in order to inject a code-sample tag instead of the default
+ code
+ tag
+
+
supplying "apps" based on tag -
+ wikipedia-query
+ and
+ github-preview
+ supply custom public API search endpoints based on their tag being loaded. This way you can use the "Media" menu in order to search Github or Wikipedia in HAX just by including these tags in your autoloader block of the appstore.
+
+
supplying translatable haxProperties -
+ meme-maker
+ and
+ twitter-embed
+ supply custom translations for their haxProperties. This means that if you were to edit these elements using the editor in Spanish (es), you would see the fields and example inputs in Spanish (es) as opposed to their English (en) default text supplied by the
+ static get haxProperties()
+ method.
+
+
+
+ activeElementChanged(element, value)
+
+
This runs whenever a user activates / selects an element to modify in HAX. This supplies an instance of the element / DOM node that is active as well as if we are active (true) or inactive (false). This hook can be used to modify state / functional aspects of your elements just prior to it receiving activation by hax. An example use-case for this could be preventing default behavior for an element that is a clickable link (see:
+ ebook-button
+). Another possible usage is making pieces of the internal
+ shadowRoot
+
+ contenteditable
+, only while activated (see:
+ meme-maker
+).
+
+
+ editModeChanged(value)
+
+
This runs on all active nodes in the
+ hax-body
+ tag when the editing state of the HAX editor itself changes. If we are now editing, value is
+ true
+, when we go to save / are no longer editing, it is
+ false
+.
+
+ inlineContextMenu(ceMenu)
+
This hook runs after element activation in order to allow elements to supply custom editing buttons and operations to the in-context menu that hovers above active elements. You have access to the instance of the custom elements hax menu element (hax-ce-context) and can add whatever buttons you want at this time with custom callbacks. See multiple-choice
+ for an example of how you can leverage this. multiple-choice
+ uses this to add quick buttons for adding and removing potential answers quickly.
+
+ preProcessNodeToContent(node)
+
This runs right before nodes are converted to content in the entire hax-body. This happens when the user has triggered a save event and we are converting the DOM from real nodes into the HTML text that is to be saved / returned to a backend. This hook allows you to do any known data clean up to the element prior to it being converted to HTML. See multiple-choice
+ for an example of taking a complex data property and converting it to innerHTML children at the time of save for progressive enhancement purposes.
+
progressiveEnhancement(element)
+
This hook runs WHILE the node is being converted to text and should return a string that will be appended into the innerHTML area of the element. This is an alternative to what you could accomplish during preProcessNodeToContent but want to work with a string based response. See meme-maker
+ for an example of using this to inject innerHTML which only is for SEO purposes.
+
+ postProcessNodeToContent(content)
+
This hook runs after preProcessNodeToContent and progressiveEnhancement and before the element is returned in the hax-save event. This runs AFTER the node has been converted to content. This is useful for forcible content clean up like regex'ing output for specific words to not leak into output. See video-player
+ for ensuring there are no internal empty arrays for data is not a required field.
+
+ preProcessInsertContent(detail)
+
This is a hax schema element, our virtual dom node, that is about to be inserted into the hax-body. This allows for custom modification to the data that's about to be converted to a DOM node. See multiple-choice
+ for an example of ensuring that answer data doesn't bleed through to the page. This hook runs on duplication as well as inserting a node by the user selecting the block.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/item-587de126-437b-4864-a3ea-54078837127c/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/item-587de126-437b-4864-a3ea-54078837127c/index.html
new file mode 100644
index 0000000..4b7272e
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/item-587de126-437b-4864-a3ea-54078837127c/index.html
@@ -0,0 +1,10 @@
+
HAX + 11ty = HAX11ty
+! HAX11ty gives you the best of SEO from 11ty while using the HAX editor and the HAXcms theme engine for presenting material. This gives you the SPA capabilities of fast loading routes in HAXcms but reload the page and it loads a physical file for high SEO ala 11ty!
It even has github actions support built in! Meaning you can check out the mini-doc site for HAX11ty
+ which is self-updated when we update the docs / repo for HAX11ty.
Templates and layouts allow you to drop in pre-built pieces of content structure. This might be a series of images or an example of content that could be written.
+
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/item-cdd303d0-4490-4433-94fa-0e78cf849e80/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/item-cdd303d0-4490-4433-94fa-0e78cf849e80/index.html
new file mode 100644
index 0000000..32477e4
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/item-cdd303d0-4490-4433-94fa-0e78cf849e80/index.html
@@ -0,0 +1,46 @@
+
We've created a way to internationalize ANY web component you create. Because this is a complex topic, and we seek to empower anyone, anywhere to work with web components; i18n is a critical piece of accessibility and improving knowledge access on the web. Doing so without requiring a framework driven approach, or even knowing how our element will be used in production, is a complicated series of decisions.
This invokes a dependency on our manager which you might not want to have in your element. If you want to do a similar approach but without dependencies, you just have to feed a custom event to our manager. You'll still have to use the convention for translatable text, but here's how you can invoke the event needed
Using the vanilla approach, you'll still need to have a /locales directory and the same naming convention. Our mixin just simplifies the integration a bit as well as the timing of what it's initiated but this event registration method will still work within any element that's going to arrive in HAX/HAXcms or any property you make that isn't using HAX at all.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/item-eca7c8a4-393a-4e68-8cb4-440e94683738/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/item-eca7c8a4-393a-4e68-8cb4-440e94683738/index.html
new file mode 100644
index 0000000..0bf2f1a
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/item-eca7c8a4-393a-4e68-8cb4-440e94683738/index.html
@@ -0,0 +1,4 @@
+
Block settings will change contextually based on which block has been selected in the editable area of the page. In this screenshot, a paragraph has been selected and so the icon associated with it is shown as well as the name of the element. If we selected a meme or other tag we'd see contextual settings based on what that HTML element tells HAX should be the editing interface.
+
Normal HTML Paragraph Tag
+
Meme Tag
+
Notice with the meme element that it now has additional fields which when changed are reflected in the page instantly!
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/json-outline-schema/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/json-outline-schema/index.html
new file mode 100644
index 0000000..0a31f5d
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/json-outline-schema/index.html
@@ -0,0 +1 @@
+
My great new content!
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/json-schema/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/json-schema/index.html
new file mode 100644
index 0000000..83fce74
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/json-schema/index.html
@@ -0,0 +1,11 @@
+
Learn more about JSON Schema
+
+
+ on the official website for that standard. JSON Schema provides a way of describing the data contained in a JSON blob so that a form can be built to modify those values. HAX uses this extensively via a tag called eco-json-schema-object
+
+
+ and related tags, to turn any json schema definition into a fully two-way data binded form.
+
HAX schema
+
+
+ is an abstraction that sits on top of JSON Schema in order to provide forms for updating values in your HAX wired elements. If you wanted to extend the types of input fields that HAX has access to then learning JSON Schema would be the best place to start!
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/scavenger-hunt-1/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/scavenger-hunt-1/index.html
new file mode 100644
index 0000000..3116c79
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/scavenger-hunt-1/index.html
@@ -0,0 +1,32 @@
+
Become part of our dynasty franchise * *by wearing a cool jersey
+
+
+
+
+
We're building the greatest roster of people ever to HAX the complacency of our industry. Take the HAX scavenger hunt at the next event to join the movement!
+
Past winners rocking their merch from completing the hunt!
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/things-and-stuff/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/things-and-stuff/index.html
new file mode 100644
index 0000000..0a31f5d
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/things-and-stuff/index.html
@@ -0,0 +1 @@
+
My great new content!
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/i-have-issues/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/i-have-issues/index.html
new file mode 100644
index 0000000..f8814ae
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/i-have-issues/index.html
@@ -0,0 +1,3 @@
+
You have a problem or would like to contribute to anything in our universe? That's awesome! All issues, feature requests and general thumbs up should happen in our issue queue on github: https://github.com/elmsln/issues/issues
+
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/index.html
new file mode 100644
index 0000000..cc4c35c
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/index.html
@@ -0,0 +1,62 @@
+
We're on a mission to empower the next billion creators to share their voice with the world and in doing so, create a less toxic web. Regardless of ability,
+ platform,
+tribe
+ or income
+.
+
Will you help us #HAXTheWeb
+ and in doing so, HAX society?
+
Then keep reading; we Got This!
+
Live demo
+
Seeing is believing! Thanks to Penn State College of Arts & Architecture for sponsoring this demo!
+
+
+# HAX editor stand alone for use in apps
+yarn add @lrnwebcomponents/h-a-x
+# or Integrate with a textarea like older wysiwyg editors
+yarn add @lrnwebcomponents/wysiwyg-hax
+
H
+eadless A
+uthoring eX
+perience (HAX) is a next generation block editor
+ that works anywhere via web components
+!
+
What is this?
+
+
+
HAX works with web component based design assets so you are never tied to HAX. This keeps your design pure
+and without adding platform lock-in as content produced by HAX is semantic HTML. Want the video player above this? Then just run this:
+# the video-player tag works with HAX but works ANYWHERE regardless of it
+yarn add @lrnwebcomponents/video-player
+
Get involved!
+
Join us on our slack channel
+ and get involved in all things HAX and web components. HAX is an open community of people who love the open web across all platforms.
+
Who's involved
+
HAX is the brainchild of Bryan Ollendyke, Michael Potter, Nikki Massaro Kaufman and a chorus of contributors. We've had contributions from:
+
Arizona State University (Drupal 8 plugin), The National Archives (UX Audit, Drupal 8 plugin)
+
Penn State Libraries (HAX11ty)
+
Penn State Eberly College of Science (core contributor / maintainers)
+
Penn State Arts and Architecture (core contributors / maintainers)
+
+
Check out the Get involved
+ page for additional details.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/presentations/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/presentations/index.html
new file mode 100644
index 0000000..25cf992
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/presentations/index.html
@@ -0,0 +1,4 @@
+
This playlist is updated on a regular basis so make sure to subscribe to the youtube channel for updates. There's also many other playlists related to all things ELMS:LN, WCFactory, HAXcms and web components in general.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/elms-ln/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/elms-ln/index.html
new file mode 100644
index 0000000..13d35f6
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/elms-ln/index.html
@@ -0,0 +1 @@
+
Ex uno Plures
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/haxcms/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/haxcms/index.html
new file mode 100644
index 0000000..13d35f6
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/haxcms/index.html
@@ -0,0 +1 @@
+
Ex uno Plures
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/haxeditor/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/haxeditor/index.html
new file mode 100644
index 0000000..13d35f6
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/haxeditor/index.html
@@ -0,0 +1 @@
+
Ex uno Plures
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/haxiam/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/haxiam/index.html
new file mode 100644
index 0000000..13d35f6
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/haxiam/index.html
@@ -0,0 +1 @@
+
Ex uno Plures
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/index.html
new file mode 100644
index 0000000..63a5173
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap-1/index.html
@@ -0,0 +1,8 @@
+
HAX encompasses many different projects
+
This roadmap illustrates all the projects related to HAX and ELMS:LN, which HAX comes from. The little settings gears found throughout illustrate enhancements and next steps for the different projects in our wheel house.
+
As you can see, there's a lot of planned enhancements to HAXeditor and HAXcms with a lot of additional future capabilities in ELMS:LN as a result of these projects. It's important to understand these relationships through and how innovations flow between them.
+
Relationships of major pieces
+
HAX has many different parts detailed here, so let's look at the relationship between these pieces before getting into the roadmap. HAX projects are part of the ELMS:LN organization and so ELMS:LN is also included in these roadmap details.
+
HAXiam, HAXcms, HAXeditor are three projects that make up the "HAX" name space, all of which benefit from being built on web components. HAXiam is a server technology while HAXcms is a mix of server and front end assets. HAXeditor is fully front-end code which then requires a backend to save and load pages from.
+
Below is an image consolidating information found on this site with arrows illustrating flow of innovation. Web components are always our building blocks, usually bubbling up as a need in either ELMS:LN, HAXcms or HAXeditor. From there, HAXeditor influences and improves ELMS:LN and HAXcms. ELMS:LN has a copy of HAXcms inside of it so sees improvements from both platforms. HAXiam just makes sure that copies of HAXcms are generated.
+
Now with this foundation you can dig into the different pieces of the project roadmaps.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/elms-ln/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/elms-ln/index.html
new file mode 100644
index 0000000..13d35f6
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/elms-ln/index.html
@@ -0,0 +1 @@
+
Ex uno Plures
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/haxcms/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/haxcms/index.html
new file mode 100644
index 0000000..13d35f6
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/haxcms/index.html
@@ -0,0 +1 @@
+
Ex uno Plures
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/haxeditor/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/haxeditor/index.html
new file mode 100644
index 0000000..13d35f6
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/haxeditor/index.html
@@ -0,0 +1 @@
+
Ex uno Plures
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/haxiam/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/haxiam/index.html
new file mode 100644
index 0000000..13d35f6
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/haxiam/index.html
@@ -0,0 +1 @@
+
Ex uno Plures
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/index.html
new file mode 100644
index 0000000..63a5173
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/roadmap/index.html
@@ -0,0 +1,8 @@
+
HAX encompasses many different projects
+
This roadmap illustrates all the projects related to HAX and ELMS:LN, which HAX comes from. The little settings gears found throughout illustrate enhancements and next steps for the different projects in our wheel house.
+
As you can see, there's a lot of planned enhancements to HAXeditor and HAXcms with a lot of additional future capabilities in ELMS:LN as a result of these projects. It's important to understand these relationships through and how innovations flow between them.
+
Relationships of major pieces
+
HAX has many different parts detailed here, so let's look at the relationship between these pieces before getting into the roadmap. HAX projects are part of the ELMS:LN organization and so ELMS:LN is also included in these roadmap details.
+
HAXiam, HAXcms, HAXeditor are three projects that make up the "HAX" name space, all of which benefit from being built on web components. HAXiam is a server technology while HAXcms is a mix of server and front end assets. HAXeditor is fully front-end code which then requires a backend to save and load pages from.
+
Below is an image consolidating information found on this site with arrows illustrating flow of innovation. Web components are always our building blocks, usually bubbling up as a need in either ELMS:LN, HAXcms or HAXeditor. From there, HAXeditor influences and improves ELMS:LN and HAXcms. ELMS:LN has a copy of HAXcms inside of it so sees improvements from both platforms. HAXiam just makes sure that copies of HAXcms are generated.
+
Now with this foundation you can dig into the different pieces of the project roadmaps.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/solutions/haxcms/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/solutions/haxcms/index.html
new file mode 100644
index 0000000..c074718
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/solutions/haxcms/index.html
@@ -0,0 +1,8 @@
+
Pure publishing joy
+
HAXcms is the slimmest possible Content Management System possible thanks to the awesome power of HAX. HAXcms boils content creation down to a handful of files behind the scenes, all of which are highly readable and small.
+
HAXcms works by loading a single "site.json" file which contains all the relationships between the pages in your site. The content of those pages is stored in single html files, which HAX is used as the editor to manipulate. The CMS then acts as a simple server technology to basically update those two files, making for easy publishing.
+
HAXcms has publishing baked in for Github pages. Read the documentation
+ section to get in deeper. This website you're viewing is powered by HAXcms and the edit controls in the bottom right would update the site if this were a live HAXcms implementation (this site is demo'ing the capabilities).
+
How HAX fits into your organization
+
HAX (and HAXCMS) are trying to lead you to education's "Roku Remote" moment. By that I mean, a world where you have a very simple little box (HAXCMS) that can be controlled in a completely uniform, simple manner (HAX) that actually pulls together a universe of content and media from across your organization. HAX helps bridge the knowledge gap between content creators and content publishers. It eliminates most of the work involved in publishing (that none of us want to do anyway)!
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/solutions/haxeditor/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/solutions/haxeditor/index.html
new file mode 100644
index 0000000..902860a
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/solutions/haxeditor/index.html
@@ -0,0 +1,6 @@
+
HAX or HAXeditor is the editor of the future you're using in this site! It's all the editing capabilities you've come for with HAX and the core solution that all other projects are based on here. The most common way of using HAXeditor is via one of it's many integrations. Check out the integrations
+ page to find one that works best for you
+
+
SO many integrations
+
+
hax has
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/solutions/haxiam/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/solutions/haxiam/index.html
new file mode 100644
index 0000000..de95af0
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/solutions/haxiam/index.html
@@ -0,0 +1,5 @@
+
HAXiam (HAX-I-Am
+) is a SaaS platform code base that's used to deploy HAXcms to multiple people. It is an abstraction on the HAXcms code base that enables it to be used by multiple users from a single point of deployment.
+
HAXiam leverages the hooks built into HAXcms to allow for integration with Enterprise login providers, making it a perfect fit for organizations looking to provide their users with micro-site publishing.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/solutions/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/solutions/index.html
new file mode 100644
index 0000000..b1ec2ca
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/solutions/index.html
@@ -0,0 +1,18 @@
+
Modularity is key to HAX success. Here are some of the solutions that HAX provides which leverage the HAXeditor interface.
+
HAX editor
+
HAX or HAXeditor is the editor of the future you're using in this site! It's all the editing capabilities you've come for with HAX and the core solution that all other projects are based on here. The most common way of using HAXeditor is via one of it's many integrations. Check out the integrations
+ page to find one that works best for you
+
HAXcms
+
HAXcms is the slimmest possible Content Management System possible thanks to the awesome power of HAX. HAXcms boils content creation down to a handful of files behind the scenes, all of which are highly readable and small.
+
HAXcms works by loading a single "site.json" file which contains all the relationships between the pages in your site. The content of those pages is stored in single html files, which HAX is used as the editor to manipulate. The CMS then acts as a simple server technology to basically update those two files, making for easy publishing.
+
HAXcms has publishing baked in for Github pages. Read the documentation
+ section to get in deeper. This website you're viewing is powered by HAXcms and the edit controls in the bottom right would update the site if this were a live HAXcms implementation (this site is demo'ing the capabilities).
+
How HAX fits into your organization
+
HAX (and HAXCMS) are trying to lead you to education's "Roku Remote" moment. By that I mean, a world where you have a very simple little box (HAXCMS) that can be controlled in a completely uniform, simple manner (HAX) that actually pulls together a universe of content and media from across your organization. HAX helps bridge the knowledge gap between content creators and content publishers. It eliminates most of the work involved in publishing (that none of us want to do anyway)!
+
+
HAXiam
+
HAXiam (HAX-I-Am
+ ) is a SaaS platform code base that's used to deploy HAXcms to multiple people. It is an abstraction on the HAXcms code base that enables it to be used by multiple users from a single point of deployment.
+
HAXiam leverages the hooks built into HAXcms to allow for integration with Enterprise login providers, making it a perfect fit for organizations looking to provide their users with micro-site publishing.
This resets hourly on the hour so be aware that this is purely for testing capabilities.
+
Special note for Penn State users
+
If you work at the university and would like to run courses or websites with HAX, you can do this by accessing hax.psu.edu
+. This is used to deploy courses and student blogs at the university and is actively supported.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/what-is-hax/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/what-is-hax/index.html
new file mode 100644
index 0000000..cf5cdce
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/what-is-hax/index.html
@@ -0,0 +1,34 @@
+
+
HAX - Headless Authoring eXperience
+
HAX is a WYSIWYG unlike any other. You extend your world by extending the web through the web component standard. HAX has a simple schema and integrations to allow anyone to author that "widget" on any web site.
+
This means that developers can fundamentally change the way HTML operates while expressing it in a highly semantic tag structure.
HAX leverages this capability to express advanced functionality through a single tag in order to build itself. Ultimately, HAX is made up of dozens of complex new web component tags. In the end though. It shows up on the interface like
+. A single tag that cascades and unpacks a unique interface experience.
+
HAX also doesn't understand what it's editing though! It hasn't been built to say, understand the meme-maker tag above. It's been built to edit things
+ in a very general sense. If it's a custom element / DOM object, it could theoretically edit it... if it knew the directions. These directions are emitted from HAX capable elements when the editor sets itself up. The critical implication of this:
+
HAX can be extended to understand how to modify just about any custom element!
+
these definitions are limited by the develop more or less creating the rules of the experience
+
the content produced can operate anywhere with or without hax after the fact
+
+
+
Wait, how can you say that
+
HAX is effectively organizing the HTML of the page just like you could. Let's look at an example of this page's source. Either hit edit and then the "Source View" button or see the screenshot below
+
So when this page was built and the files/lego.jpg
+ file uploaded (drag and drop in a place holder area) we selected the "Full width" image type for rendering. Then, adding a caption in the HAX element panel, we hit insert and HAX writes the properties into the web component and adds it to the DOM it is editing. When you hit save, HAX takes this piece of DOM and converts it into HTML to send to a backend.
+
The output has no trace of HAX, meaning that if you can load the web component definition for the full-width-image tag, then you no longer require HAX. It also means that if this content migrates between platforms that have access to HAX, it'll know how to pick up and modify the content after the fact (as long as the web component definition is there).
+
In this way, HAX then gets integrated into other platforms by effectively managing the "body" / blob area that makes up the page. The visual assets produced that work with HAX can then be used anywhere in any website.
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/welcome/why-haxcms-1/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/why-haxcms-1/index.html
new file mode 100644
index 0000000..7bb7dee
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/welcome/why-haxcms-1/index.html
@@ -0,0 +1,48 @@
+
+
HAXcms powers this website and is a hybrid static site generator, a new class of CMS. It's hybrid in that everything is written to static like a static site generator and it's 100% decoupled via web components.
+
+
+
+
Features
+
Micro-site manager, so manage multiple sites from a single HAXcms install
+
Each site is powered by static files which live in version control
+
Every change is executed by the front end via HAX / Outline tools
+
Every change is automatically tracked in version control (zip the folder and send it to a friend and it'll work)
+
The "database" is powered by a site.json file that lives with the site
+
All operations write to static files so every change is as if you editing HTML by hand (but you didn't... HAX did)
+
Ability to serve up as a static site on CDNs (this site is on GH pages + a CDN) via Publishing which makes a purely static copy with a service worker and the whole jazz for offline / installable capability (0 config)
+
Build your own themes via custom front end dev if you like or use one of our baked in ones
+
+
It is a flat file generator with a UI and the UI contextually loads based on if you should see it. It's weird, we know, and that's also why we have trouble describing what it is. It's a flat file CMS without tooling required. It's a sustainable way of building and maintaining a "CMS" as it has multiple pages, can handle custom fields, custom themes, but yet it doesn't require infrastructure to keep running beyond PHP / node / Beaker browser to act as a back end to edit the static files.
+
It's an organic CMS. A living yet permanent website. It's hacking the limitations of content authoring capabilities. It's why we say, we're HAX The Web.
+
Core Principles
+
Support all platforms and devices (CMS, App, etc)
+
Empower authors to write code without ever looking at code
+
All content produced must work with or without HAXeditor available
+
Support older markup, regardless of structure, as best we can
+
HAX will learn the rules of producing elements, it won't dictate them
+
Decentralize all the things, empower all the peoples
+
+
Cross platform
+
Because we've adopted the web component
+
+ standard in the development of both HAX (authoring system) and HAXCMS (content management), everything we create and compile via our open tooling
+ can support about 98.4% of all browser traffic globally without server side rendering. HAXcms also employs a progressive enhancement methodology meaning that it can hit 100% of all browsing traffic with content.
+
This means that you can use the latest and greatest of the web and not have to constantly worry about a library changing! The dawn of the age of web components is now, join the revolution!
+
Platform support
+
Evergreen
+ browsers
+ (93+% of traffic) - no polyfills!
See F.A.Q.
+ for a more detailed break out of stats
+
+
No content lock-in
+
The elements that make up HAX can be delivered via a CDN or installed locally. This means that the functionality is tied to the browser
+
+ and NOT
+
+ to the platform itself (huh?). Well, think of all the complex functionality of any site you've ever built or used. Then add content to that site. Now move that site (in your mind) to another server. What has to be migrated to maintain the content functioning that isn't actually content?
HAXcms powers this website and is a hybrid static site generator, a new class of CMS. It's hybrid in that everything is written to static like a static site generator and it's 100% decoupled via web components.
+
+
+
+
Features
+
Micro-site manager, so manage multiple sites from a single HAXcms install
+
Each site is powered by static files which live in version control
+
Every change is executed by the front end via HAX / Outline tools
+
Every change is automatically tracked in version control (zip the folder and send it to a friend and it'll work)
+
The "database" is powered by a site.json file that lives with the site
+
All operations write to static files so every change is as if you editing HTML by hand (but you didn't... HAX did)
+
Ability to serve up as a static site on CDNs (this site is on GH pages + a CDN) via Publishing which makes a purely static copy with a service worker and the whole jazz for offline / installable capability (0 config)
+
Build your own themes via custom front end dev if you like or use one of our baked in ones
+
+
It is a flat file generator with a UI and the UI contextually loads based on if you should see it. It's weird, we know, and that's also why we have trouble describing what it is. It's a flat file CMS without tooling required. It's a sustainable way of building and maintaining a "CMS" as it has multiple pages, can handle custom fields, custom themes, but yet it doesn't require infrastructure to keep running beyond PHP / node / Beaker browser to act as a back end to edit the static files.
+
It's an organic CMS. A living yet permanent website. It's hacking the limitations of content authoring capabilities. It's why we say, we're HAX The Web.
+
Core Principles
+
Support all platforms and devices (CMS, App, etc)
+
Empower authors to write code without ever looking at code
+
All content produced must work with or without HAXeditor available
+
Support older markup, regardless of structure, as best we can
+
HAX will learn the rules of producing elements, it won't dictate them
+
Decentralize all the things, empower all the peoples
+
+
Cross platform
+
Because we've adopted the web component
+
+ standard in the development of both HAX (authoring system) and HAXCMS (content management), everything we create and compile via our open tooling
+ can support about 98.4% of all browser traffic globally without server side rendering. HAXcms also employs a progressive enhancement methodology meaning that it can hit 100% of all browsing traffic with content.
+
This means that you can use the latest and greatest of the web and not have to constantly worry about a library changing! The dawn of the age of web components is now, join the revolution!
+
Platform support
+
Evergreen
+ browsers
+ (93+% of traffic) - no polyfills!
See F.A.Q.
+ for a more detailed break out of stats
+
+
No content lock-in
+
The elements that make up HAX can be delivered via a CDN or installed locally. This means that the functionality is tied to the browser
+
+ and NOT
+
+ to the platform itself (huh?). Well, think of all the complex functionality of any site you've ever built or used. Then add content to that site. Now move that site (in your mind) to another server. What has to be migrated to maintain the content functioning that isn't actually content?
+
For example, take this quiz:
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/pages/why-hax/index.html b/github-pages-deploy-action-temp-deployment-folder/pages/why-hax/index.html
new file mode 100644
index 0000000..f330ff2
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/pages/why-hax/index.html
@@ -0,0 +1,74 @@
+
Core Principles
+
Support all platforms and devices (CMS, App, etc)
+
+
Empower authors to write code without ever looking at code
+
+
All content produced must work with or without HAXeditor available
+
+
Support older markup, regardless of structure, as best we can
+
+
HAX will learn the rules of producing elements, it won't dictate them
+
+
+
Decentralize all the things, empower all the peoples
+
+
+
+
Cross platform
+
Because we've adopted the web component
+
+
+
+
+
+
+
+
+
+
+
+ standard in the development of both HAX (authoring system) and HAXCMS (content management), everything we create and compile via our open tooling
+ can support about 98.4% of all browser traffic globally without server side rendering. HAXcms also employs a progressive enhancement methodology meaning that it can hit 100% of all browsing traffic with content.
+
This means that you can use the latest and greatest of the web and not have to constantly worry about a library changing! The dawn of the age of web components is now, join the revolution!
+
Platform support
+
Chrome, Safari, Opera, iOS, Android, Firefox - no polyfill, last 3 versions!
The elements that make up HAX can be delivered via a CDN or installed locally. This means that the functionality is tied to the browser
+
+
+
+
+
+
+
+
+
+
+
+ and NOT
+
+
+
+
+
+
+
+
+
+
+
+ to the platform itself (huh?). Well, think of all the complex functionality of any site you've ever built or used. Then add content to that site. Now move that site (in your mind) to another server. What has to be migrated to maintain the content functioning that isn't actually content?
+
For example, take this quiz:
+
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/polymer.json b/github-pages-deploy-action-temp-deployment-folder/polymer.json
new file mode 100644
index 0000000..1525167
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/polymer.json
@@ -0,0 +1,126 @@
+{
+ "entrypoint": "dist/build.html",
+ "extraDependencies": [
+ "manifest.json",
+ "node_modules/@polymer/app-layout/*/*.js",
+ "node_modules/@polymer/**/*.js",
+ "node_modules/@polymer/marked-element/node_modules/marked/lib/marked.js",
+ "node_modules/@google/model-viewer/dist/model-viewer.js",
+ "node_modules/@vowo/chart-elements/*.js",
+ "node_modules/intl-messageformat/src/*.js",
+ "node_modules/intl-messageformat-parser/src/*.js",
+ "node_modules/@material/*/*.js",
+ "node_modules/tslib/tslib.es6.js",
+ "node_modules/web-dialog/*.js",
+ "node_modules/tslib/tslib.js",
+ "node_modules/@lit-labs/motion/*.js",
+ "node_modules/@lit-labs/motion/*.*.map",
+ "node_modules/@github/time-elements/dist/*.js",
+ "node_modules/@haxtheweb/*/*.js",
+ "node_modules/@haxtheweb/app-hax/lib/v1/*",
+ "node_modules/@haxtheweb/*/lib/*",
+ "node_modules/@haxtheweb/*/lib/**",
+ "node_modules/@haxtheweb/*/locales/*.json",
+ "node_modules/@haxtheweb/haxcms-elements/package.json",
+ "node_modules/@haxtheweb/haxcms-elements/**",
+ "node_modules/@haxtheweb/*/lib/*/*.js",
+ "node_modules/@haxtheweb/*/lib/*/*",
+ "node_modules/@haxtheweb/*/lib/*/*/*.js",
+ "node_modules/lit/*.js",
+ "node_modules/lit/directives/*.js",
+ "node_modules/lit/decorators/*.js",
+ "node_modules/mobx/dist/mobx.esm.js",
+ "node_modules/lit-html/*.*.map",
+ "node_modules/lit-html/*.js",
+ "node_modules/lit-html/*/*.*.map",
+ "node_modules/lit-html/*/*.js",
+ "node_modules/lit-element/lit-element.js",
+ "node_modules/lit-element/lib/*.*.map",
+ "node_modules/lit-element/node_modules/lit-html/*.*.map",
+ "node_modules/lit-element/node_modules/lit-html/*.js",
+ "node_modules/lit-element/node_modules/lit-html/*/*.*.map",
+ "node_modules/lit-element/node_modules/lit-html/*/*.js",
+ "node_modules/lit-element/*.*.map",
+ "node_modules/@vaadin/**",
+ "node_modules/vmsg/*",
+ "node_modules/web-social-share/dist/esm/**",
+ "node_modules/web-animations-js/*.map",
+ "node_modules/web-animations-js/*.js",
+ "node_modules/flag-icon-css/flags/*/*.svg",
+ "node_modules/@haxtheweb/*/lib/screenfull/dist/screenfull.js",
+ "node_modules/lit-element-router/utility/router-utility.js",
+ "node_modules/lit-element-router/lit-element-router.js",
+ "node_modules/scrollable-component/index.js",
+ "node_modules/jquery/dist/jquery.min.js",
+ "node_modules/bootstrap/dist/css/bootstrap.min.css",
+ "node_modules/bootstrap/dist/js/bootstrap.bundle.min.js",
+ "node_modules/@haxtheweb/product-card/lib/fields.json",
+ "node_modules/@haxtheweb/dynamic-import-registry/dynamic-import-registry.js",
+ "node_modules/@haxtheweb/img-pan-zoom/lib/openseadragon/openseadragon.min.js",
+ "node_modules/@haxtheweb/wc-autoload/wc-autoload.js",
+ "node_modules/@haxtheweb/elmsln-apps/lib/*/*.js",
+ "node_modules/@haxtheweb/stop-note/lib/svgs/*/*.svg",
+ "node_modules/@haxtheweb/simple-icon/lib/svgs/*/*.svg",
+ "node_modules/@haxtheweb/hax-iconset/lib/svgs/*/*.svg",
+ "node_modules/@haxtheweb/wave-player/lib/wavesurferjs/dist/wavesurfer.js",
+ "node_modules/@webcomponents/webcomponentsjs/*.js",
+ "node_modules/@webcomponents/webcomponentsjs/bundles/*.js",
+ "node_modules/@webcomponents/webcomponentsjs/webcomponents-bundle.js.map",
+ "node_modules/monaco-editor/min/**",
+ "node_modules/monaco-editor/min-maps/**",
+ "node_modules/lunr/lunr.js",
+ "node_modules/msr/MediaStreamRecorder.min.js",
+ "node_modules/@haxtheweb/chartist-render/lib/chartist/dist/chartist.min.js",
+ "node_modules/@haxtheweb/code-sample/lib/highlightjs/languages/*.js",
+ "node_modules/idb-keyval/dist/*.js",
+ "node_modules/safari-14-idb-fix/dist/*.js",
+ "!node_modules/@polymer/app-layout/templates/**",
+ "!node_modules/@polymer/app-layout/patterns/**",
+ "!node_modules/@polymer/*/demo/*.js",
+ "!node_modules/@haxtheweb/haxcms-elements/demo/dist/*.js",
+ "!node_modules/@haxtheweb/elmsln-apps/lib/*/demo/*",
+ "!node_modules/@haxtheweb/simple-icon/lib/svgs/elmsln-custom",
+ "!node_modules/@haxtheweb/wave-player/lib/wavesurferjs/src/**",
+ "!node_modules/@vaadin/*/test/*",
+ "!node_modules/@haxtheweb/*/test/*",
+ "!node_modules/@webcomponents/webcomponentsjs/gulpfile.js",
+ "!node_modules/@haxtheweb/storybook-utilities/storybook-utilities.js",
+ "!node_modules/@haxtheweb/*/*.umd.js",
+ "!node_modules/@haxtheweb/*/*.amd.js",
+ "!node_modules/@haxtheweb/*/*.es6.js",
+ "!node_modules/@haxtheweb/*/*.stories.js",
+ "!node_modules/@haxtheweb/*/*/*.stories.js",
+ "!node_modules/@haxtheweb/*/*.storiesold.js",
+ "!node_modules/@haxtheweb/*/*/*.storiesold.js",
+ "!node_modules/@haxtheweb/*/*.story.js",
+ "!rollup.config.js",
+ "!*.stories.js",
+ "!*.story.js",
+ "!*.umd.js",
+ "!*.amd.js",
+ "!*.es6.js"
+ ],
+ "sources": [],
+ "builds": [
+ {
+ "name": "es6",
+ "browserCapabilities": ["es2018", "modules"],
+ "js": {
+ "minify": false,
+ "transformImportMeta": true
+ },
+ "css": {
+ "minify": false
+ },
+ "html": {
+ "minify": false
+ },
+ "bundle": false
+ }
+ ],
+ "moduleResolution": "node",
+ "npm": true,
+ "lint": {
+ "rules": ["polymer-3"]
+ }
+}
diff --git a/github-pages-deploy-action-temp-deployment-folder/push-manifest.json b/github-pages-deploy-action-temp-deployment-folder/push-manifest.json
new file mode 100644
index 0000000..4d0fb30
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/push-manifest.json
@@ -0,0 +1,8 @@
+{
+ "index.html": {
+ "site.json": {
+ "type": "document",
+ "weight": 1
+ }
+ }
+}
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/robots.txt b/github-pages-deploy-action-temp-deployment-folder/robots.txt
new file mode 100644
index 0000000..c6b468c
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/robots.txt
@@ -0,0 +1,27 @@
+User-agent: *
+Crawl-delay: 10
+# CSS, JS, Images
+Allow: /assets/*.css$
+Allow: /assets/*.css?
+Allow: /assets/*.js$
+Allow: /assets/*.js?
+Allow: /assets/*.gif
+Allow: /assets/*.jpg
+Allow: /assets/*.jpeg
+Allow: /assets/*.png
+
+Allow: /theme/*.css$
+Allow: /theme/*.css?
+Allow: /theme/*.js$
+Allow: /theme/*.js?
+Allow: /theme/*.gif
+Allow: /theme/*.jpg
+Allow: /theme/*.jpeg
+Allow: /theme/*.png
+
+Disallow: /assets/
+Disallow: /build/
+Disallow: /dist/
+Disallow: /node_modules/
+Disallow: /pages/
+Disallow: /theme/
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/rss.xml b/github-pages-deploy-action-temp-deployment-folder/rss.xml
new file mode 100644
index 0000000..b6d51d8
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/rss.xml
@@ -0,0 +1,13 @@
+
+
+
+ hax-the-web
+ https://haxtheweb.org//rss.xml
+ Project home and documentation for all things HAX
+ Copyright (C) 2024 https://haxtheweb.org/
+ en-us
+ 1970-01-20T23:35:16.452Z
+
+
+
+
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/service-worker.js b/github-pages-deploy-action-temp-deployment-folder/service-worker.js
new file mode 100644
index 0000000..48dda06
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/service-worker.js
@@ -0,0 +1,290 @@
+/**
+ * Copyright 2016 Google Inc. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+// DO NOT EDIT THIS GENERATED OUTPUT DIRECTLY!
+// This file should be overwritten as part of your build process.
+// If you need to extend the behavior of the generated service worker, the best approach is to write
+// additional code and include it using the importScripts option:
+// https://github.com/GoogleChrome/sw-precache#importscripts-arraystring
+//
+// Alternatively, it's possible to make changes to the underlying template file and then use that as the
+// new base for generating output, via the templateFilePath option:
+// https://github.com/GoogleChrome/sw-precache#templatefilepath-string
+//
+// If you go that route, make sure that whenever you update your sw-precache dependency, you reconcile any
+// changes made to this original template file with your modified copy.
+
+// This generated service worker JavaScript will precache your site's resources.
+// The code needs to be saved in a .js file at the top-level of your site, and registered
+// from your pages in order to be used. See
+// https://github.com/googlechrome/sw-precache/blob/master/demo/app/js/service-worker-registration.js
+// for an example of how you can register this script and handle various service worker events.
+
+/* eslint-env worker, serviceworker */
+/* eslint-disable indent, no-unused-vars, no-multiple-empty-lines, max-nested-callbacks, space-before-function-paren, quotes, comma-spacing */
+'use strict';
+
+var precacheConfig = {{ swhash|json_encode(constant('JSON_PRETTY_PRINT'))|raw }};
+var cacheName = 'sw-precache-v3--' + (self.registration ? self.registration.scope : '');
+
+
+var ignoreUrlParametersMatching = [/^utm_/];
+
+
+
+var addDirectoryIndex = function (originalUrl, index) {
+ var url = new URL(originalUrl);
+ if (url.pathname.slice(-1) === '/') {
+ url.pathname += index;
+ }
+ return url.toString();
+};
+
+var cleanResponse = function (originalResponse) {
+ // If this is not a redirected response, then we don't have to do anything.
+ if (!originalResponse.redirected) {
+ return Promise.resolve(originalResponse);
+ }
+
+ // Firefox 50 and below doesn't support the Response.body stream, so we may
+ // need to read the entire body to memory as a Blob.
+ var bodyPromise = 'body' in originalResponse ?
+ Promise.resolve(originalResponse.body) :
+ originalResponse.blob();
+
+ return bodyPromise.then(function (body) {
+ // new Response() is happy when passed either a stream or a Blob.
+ return new Response(body, {
+ headers: originalResponse.headers,
+ status: originalResponse.status,
+ statusText: originalResponse.statusText
+ });
+ });
+};
+
+var createCacheKey = function (originalUrl, paramName, paramValue,
+ dontCacheBustUrlsMatching) {
+ // Create a new URL object to avoid modifying originalUrl.
+ var url = new URL(originalUrl);
+
+ // If dontCacheBustUrlsMatching is not set, or if we don't have a match,
+ // then add in the extra cache-busting URL parameter.
+ if (!dontCacheBustUrlsMatching ||
+ !(url.pathname.match(dontCacheBustUrlsMatching))) {
+ url.search += (url.search ? '&' : '') +
+ encodeURIComponent(paramName) + '=' + encodeURIComponent(paramValue);
+ }
+
+ return url.toString();
+};
+
+var isPathWhitelisted = function (whitelist, absoluteUrlString) {
+ // If the whitelist is empty, then consider all URLs to be whitelisted.
+ if (whitelist.length === 0) {
+ return true;
+ }
+
+ // Otherwise compare each path regex to the path of the URL passed in.
+ var path = (new URL(absoluteUrlString)).pathname;
+ return whitelist.some(function (whitelistedPathRegex) {
+ return path.match(whitelistedPathRegex);
+ });
+};
+
+var stripIgnoredUrlParameters = function (originalUrl,
+ ignoreUrlParametersMatching) {
+ var url = new URL(originalUrl);
+ // Remove the hash; see https://github.com/GoogleChrome/sw-precache/issues/290
+ url.hash = '';
+
+ url.search = url.search.slice(1) // Exclude initial '?'
+ .split('&') // Split into an array of 'key=value' strings
+ .map(function (kv) {
+ return kv.split('='); // Split each 'key=value' string into a [key, value] array
+ })
+ .filter(function (kv) {
+ return ignoreUrlParametersMatching.every(function (ignoredRegex) {
+ return !ignoredRegex.test(kv[0]); // Return true iff the key doesn't match any of the regexes.
+ });
+ })
+ .map(function (kv) {
+ return kv.join('='); // Join each [key, value] array into a 'key=value' string
+ })
+ .join('&'); // Join the array of 'key=value' strings into a string with '&' in between each
+
+ return url.toString();
+};
+
+
+var hashParamName = '_sw-precache';
+var urlsToCacheKeys = new Map(
+ precacheConfig.map(function (item) {
+ var relativeUrl = item[0];
+ var hash = item[1];
+ var absoluteUrl = new URL(relativeUrl, self.location);
+ var cacheKey = createCacheKey(absoluteUrl, hashParamName, hash, false);
+ return [absoluteUrl.toString(), cacheKey];
+ })
+);
+
+function setOfCachedUrls(cache) {
+ return cache.keys().then(function (requests) {
+ return requests.map(function (request) {
+ return request.url;
+ });
+ }).then(function (urls) {
+ return new Set(urls);
+ });
+}
+
+self.addEventListener('install', function (event) {
+ event.waitUntil(
+ caches.open(cacheName).then(function (cache) {
+ return setOfCachedUrls(cache).then(function (cachedUrls) {
+ return Promise.all(
+ Array.from(urlsToCacheKeys.values()).map(function (cacheKey) {
+ // If we don't have a key matching url in the cache already, add it.
+ if (!cachedUrls.has(cacheKey)) {
+ var request = new Request(cacheKey, { credentials: 'same-origin' });
+ return fetch(request).then(function (response) {
+ // Bail out of installation unless we get back a 200 OK for
+ // every request.
+ if (!response.ok) {
+ throw new Error('Request for ' + cacheKey + ' returned a ' +
+ 'response with status ' + response.status);
+ }
+
+ return cleanResponse(response).then(function (responseToCache) {
+ return cache.put(cacheKey, responseToCache);
+ });
+ });
+ }
+ })
+ );
+ });
+ }).then(function () {
+
+ // Force the SW to transition from installing -> active state
+ return self.skipWaiting();
+
+ })
+ );
+});
+
+self.addEventListener('activate', function (event) {
+ var setOfExpectedUrls = new Set(urlsToCacheKeys.values());
+
+ event.waitUntil(
+ caches.open(cacheName).then(function (cache) {
+ return cache.keys().then(function (existingRequests) {
+ return Promise.all(
+ existingRequests.map(function (existingRequest) {
+ if (!setOfExpectedUrls.has(existingRequest.url)) {
+ return cache.delete(existingRequest);
+ }
+ })
+ );
+ });
+ }).then(function () {
+
+ return self.clients.claim();
+
+ })
+ );
+});
+
+
+self.addEventListener('fetch', function (event) {
+ if (event.request.method === 'GET') {
+ // Should we call event.respondWith() inside this fetch event handler?
+ // This needs to be determined synchronously, which will give other fetch
+ // handlers a chance to handle the request if need be.
+ var shouldRespond;
+
+ // First, remove all the ignored parameters and hash fragment, and see if we
+ // have that URL in our cache. If so, great! shouldRespond will be true.
+ var url = stripIgnoredUrlParameters(event.request.url, ignoreUrlParametersMatching);
+ shouldRespond = urlsToCacheKeys.has(url);
+
+ // If shouldRespond is false, check again, this time with 'index.html'
+ // (or whatever the directoryIndex option is set to) at the end.
+ var directoryIndex = '';
+ if (!shouldRespond && directoryIndex) {
+ url = addDirectoryIndex(url, directoryIndex);
+ shouldRespond = urlsToCacheKeys.has(url);
+ }
+
+ // If shouldRespond is still false, check to see if this is a navigation
+ // request, and if so, whether the URL matches navigateFallbackWhitelist.
+ var navigateFallback = 'index.html';
+ if (!shouldRespond &&
+ navigateFallback &&
+ (event.request.mode === 'navigate') &&
+ isPathWhitelisted(["\\/[^\\/\\.]*(\\?|$)"], event.request.url)) {
+ url = new URL(navigateFallback, self.location).toString();
+ shouldRespond = urlsToCacheKeys.has(url);
+ }
+
+ // If shouldRespond was set to true at any point, then call
+ // event.respondWith(), using the appropriate cache key.
+ if (shouldRespond) {
+ event.respondWith(
+ caches.open(cacheName).then(function (cache) {
+ return cache.match(urlsToCacheKeys.get(url)).then(function (response) {
+ if (response) {
+ return response;
+ }
+ throw Error('The cached response that was expected is missing.');
+ });
+ }).catch(function (e) {
+ // Fall back to just fetch()ing the request if some unexpected error
+ // prevented the cached response from being valid.
+ console.warn('Couldn\'t serve response for "%s" from cache: %O', event.request.url, e);
+ return fetch(event.request);
+ })
+ );
+ }
+ }
+});
+
+
+// *** Start of auto-included sw-toolbox code. ***
+/*
+ Copyright 2016 Google Inc. All Rights Reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+!function (e) { if ("object" == typeof exports && "undefined" != typeof module) module.exports = e(); else if ("function" == typeof define && define.amd) define([], e); else { var t; t = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this, t.toolbox = e() } }(function () { return function e(t, n, r) { function o(c, s) { if (!n[c]) { if (!t[c]) { var a = "function" == typeof require && require; if (!s && a) return a(c, !0); if (i) return i(c, !0); var u = new Error("Cannot find module '" + c + "'"); throw u.code = "MODULE_NOT_FOUND", u } var f = n[c] = { exports: {} }; t[c][0].call(f.exports, function (e) { var n = t[c][1][e]; return o(n ? n : e) }, f, f.exports, e, t, n, r) } return n[c].exports } for (var i = "function" == typeof require && require, c = 0; c < r.length; c++)o(r[c]); return o }({ 1: [function (e, t, n) { "use strict"; function r(e, t) { t = t || {}; var n = t.debug || m.debug; n && console.log("[sw-toolbox] " + e) } function o(e) { var t; return e && e.cache && (t = e.cache.name), t = t || m.cache.name, caches.open(t) } function i(e, t) { t = t || {}; var n = t.successResponses || m.successResponses; return fetch(e.clone()).then(function (r) { return "GET" === e.method && n.test(r.status) && o(t).then(function (n) { n.put(e, r).then(function () { var r = t.cache || m.cache; (r.maxEntries || r.maxAgeSeconds) && r.name && c(e, n, r) }) }), r.clone() }) } function c(e, t, n) { var r = s.bind(null, e, t, n); d = d ? d.then(r) : r() } function s(e, t, n) { var o = e.url, i = n.maxAgeSeconds, c = n.maxEntries, s = n.name, a = Date.now(); return r("Updating LRU order for " + o + ". Max entries is " + c + ", max age is " + i), g.getDb(s).then(function (e) { return g.setTimestampForUrl(e, o, a) }).then(function (e) { return g.expireEntries(e, c, i, a) }).then(function (e) { r("Successfully updated IDB."); var n = e.map(function (e) { return t.delete(e) }); return Promise.all(n).then(function () { r("Done with cache cleanup.") }) }).catch(function (e) { r(e) }) } function a(e, t, n) { return r("Renaming cache: [" + e + "] to [" + t + "]", n), caches.delete(t).then(function () { return Promise.all([caches.open(e), caches.open(t)]).then(function (t) { var n = t[0], r = t[1]; return n.keys().then(function (e) { return Promise.all(e.map(function (e) { return n.match(e).then(function (t) { return r.put(e, t) }) })) }).then(function () { return caches.delete(e) }) }) }) } function u(e, t) { return o(t).then(function (t) { return t.add(e) }) } function f(e, t) { return o(t).then(function (t) { return t.delete(e) }) } function h(e) { e instanceof Promise || p(e), m.preCacheItems = m.preCacheItems.concat(e) } function p(e) { var t = Array.isArray(e); if (t && e.forEach(function (e) { "string" == typeof e || e instanceof Request || (t = !1) }), !t) throw new TypeError("The precache method expects either an array of strings and/or Requests or a Promise that resolves to an array of strings and/or Requests."); return e } function l(e, t, n) { if (!e) return !1; if (t) { var r = e.headers.get("date"); if (r) { var o = new Date(r); if (o.getTime() + 1e3 * t < n) return !1 } } return !0 } var d, m = e("./options"), g = e("./idb-cache-expiration"); t.exports = { debug: r, fetchAndCache: i, openCache: o, renameCache: a, cache: u, uncache: f, precache: h, validatePrecacheInput: p, isResponseFresh: l } }, { "./idb-cache-expiration": 2, "./options": 4 }], 2: [function (e, t, n) { "use strict"; function r(e) { return new Promise(function (t, n) { var r = indexedDB.open(u + e, f); r.onupgradeneeded = function () { var e = r.result.createObjectStore(h, { keyPath: p }); e.createIndex(l, l, { unique: !1 }) }, r.onsuccess = function () { t(r.result) }, r.onerror = function () { n(r.error) } }) } function o(e) { return e in d || (d[e] = r(e)), d[e] } function i(e, t, n) { return new Promise(function (r, o) { var i = e.transaction(h, "readwrite"), c = i.objectStore(h); c.put({ url: t, timestamp: n }), i.oncomplete = function () { r(e) }, i.onabort = function () { o(i.error) } }) } function c(e, t, n) { return t ? new Promise(function (r, o) { var i = 1e3 * t, c = [], s = e.transaction(h, "readwrite"), a = s.objectStore(h), u = a.index(l); u.openCursor().onsuccess = function (e) { var t = e.target.result; if (t && n - i > t.value[l]) { var r = t.value[p]; c.push(r), a.delete(r), t.continue() } }, s.oncomplete = function () { r(c) }, s.onabort = o }) : Promise.resolve([]) } function s(e, t) { return t ? new Promise(function (n, r) { var o = [], i = e.transaction(h, "readwrite"), c = i.objectStore(h), s = c.index(l), a = s.count(); s.count().onsuccess = function () { var e = a.result; e > t && (s.openCursor().onsuccess = function (n) { var r = n.target.result; if (r) { var i = r.value[p]; o.push(i), c.delete(i), e - o.length > t && r.continue() } }) }, i.oncomplete = function () { n(o) }, i.onabort = r }) : Promise.resolve([]) } function a(e, t, n, r) { return c(e, n, r).then(function (n) { return s(e, t).then(function (e) { return n.concat(e) }) }) } var u = "sw-toolbox-", f = 1, h = "store", p = "url", l = "timestamp", d = {}; t.exports = { getDb: o, setTimestampForUrl: i, expireEntries: a } }, {}], 3: [function (e, t, n) { "use strict"; function r(e) { var t = a.match(e.request); t ? e.respondWith(t(e.request)) : a.default && "GET" === e.request.method && 0 === e.request.url.indexOf("http") && e.respondWith(a.default(e.request)) } function o(e) { s.debug("activate event fired"); var t = u.cache.name + "$$$inactive$$$"; e.waitUntil(s.renameCache(t, u.cache.name)) } function i(e) { return e.reduce(function (e, t) { return e.concat(t) }, []) } function c(e) { var t = u.cache.name + "$$$inactive$$$"; s.debug("install event fired"), s.debug("creating cache [" + t + "]"), e.waitUntil(s.openCache({ cache: { name: t } }).then(function (e) { return Promise.all(u.preCacheItems).then(i).then(s.validatePrecacheInput).then(function (t) { return s.debug("preCache list: " + (t.join(", ") || "(none)")), e.addAll(t) }) })) } e("serviceworker-cache-polyfill"); var s = e("./helpers"), a = e("./router"), u = e("./options"); t.exports = { fetchListener: r, activateListener: o, installListener: c } }, { "./helpers": 1, "./options": 4, "./router": 6, "serviceworker-cache-polyfill": 16 }], 4: [function (e, t, n) { "use strict"; var r; r = self.registration ? self.registration.scope : self.scope || new URL("./", self.location).href, t.exports = { cache: { name: "$$$toolbox-cache$$$" + r + "$$$", maxAgeSeconds: null, maxEntries: null }, debug: !1, networkTimeoutSeconds: null, preCacheItems: [], successResponses: /^0|([123]\d\d)|(40[14567])|410$/ } }, {}], 5: [function (e, t, n) { "use strict"; var r = new URL("./", self.location), o = r.pathname, i = e("path-to-regexp"), c = function (e, t, n, r) { t instanceof RegExp ? this.fullUrlRegExp = t : (0 !== t.indexOf("/") && (t = o + t), this.keys = [], this.regexp = i(t, this.keys)), this.method = e, this.options = r, this.handler = n }; c.prototype.makeHandler = function (e) { var t; if (this.regexp) { var n = this.regexp.exec(e); t = {}, this.keys.forEach(function (e, r) { t[e.name] = n[r + 1] }) } return function (e) { return this.handler(e, t, this.options) }.bind(this) }, t.exports = c }, { "path-to-regexp": 15 }], 6: [function (e, t, n) { "use strict"; function r(e) { return e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&") } var o = e("./route"), i = e("./helpers"), c = function (e, t) { for (var n = e.entries(), r = n.next(), o = []; !r.done;) { var i = new RegExp(r.value[0]); i.test(t) && o.push(r.value[1]), r = n.next() } return o }, s = function () { this.routes = new Map, this.routes.set(RegExp, new Map), this.default = null };["get", "post", "put", "delete", "head", "any"].forEach(function (e) { s.prototype[e] = function (t, n, r) { return this.add(e, t, n, r) } }), s.prototype.add = function (e, t, n, c) { c = c || {}; var s; t instanceof RegExp ? s = RegExp : (s = c.origin || self.location.origin, s = s instanceof RegExp ? s.source : r(s)), e = e.toLowerCase(); var a = new o(e, t, n, c); this.routes.has(s) || this.routes.set(s, new Map); var u = this.routes.get(s); u.has(e) || u.set(e, new Map); var f = u.get(e), h = a.regexp || a.fullUrlRegExp; f.has(h.source) && i.debug('"' + t + '" resolves to same regex as existing route.'), f.set(h.source, a) }, s.prototype.matchMethod = function (e, t) { var n = new URL(t), r = n.origin, o = n.pathname; return this._match(e, c(this.routes, r), o) || this._match(e, [this.routes.get(RegExp)], t) }, s.prototype._match = function (e, t, n) { if (0 === t.length) return null; for (var r = 0; r < t.length; r++) { var o = t[r], i = o && o.get(e.toLowerCase()); if (i) { var s = c(i, n); if (s.length > 0) return s[0].makeHandler(n) } } return null }, s.prototype.match = function (e) { return this.matchMethod(e.method, e.url) || this.matchMethod("any", e.url) }, t.exports = new s }, { "./helpers": 1, "./route": 5 }], 7: [function (e, t, n) { "use strict"; function r(e, t, n) { return n = n || {}, i.debug("Strategy: cache first [" + e.url + "]", n), i.openCache(n).then(function (t) { return t.match(e).then(function (t) { var r = n.cache || o.cache, c = Date.now(); return i.isResponseFresh(t, r.maxAgeSeconds, c) ? t : i.fetchAndCache(e, n) }) }) } var o = e("../options"), i = e("../helpers"); t.exports = r }, { "../helpers": 1, "../options": 4 }], 8: [function (e, t, n) { "use strict"; function r(e, t, n) { return n = n || {}, i.debug("Strategy: cache only [" + e.url + "]", n), i.openCache(n).then(function (t) { return t.match(e).then(function (e) { var t = n.cache || o.cache, r = Date.now(); if (i.isResponseFresh(e, t.maxAgeSeconds, r)) return e }) }) } var o = e("../options"), i = e("../helpers"); t.exports = r }, { "../helpers": 1, "../options": 4 }], 9: [function (e, t, n) { "use strict"; function r(e, t, n) { return o.debug("Strategy: fastest [" + e.url + "]", n), new Promise(function (r, c) { var s = !1, a = [], u = function (e) { a.push(e.toString()), s ? c(new Error('Both cache and network failed: "' + a.join('", "') + '"')) : s = !0 }, f = function (e) { e instanceof Response ? r(e) : u("No result returned") }; o.fetchAndCache(e.clone(), n).then(f, u), i(e, t, n).then(f, u) }) } var o = e("../helpers"), i = e("./cacheOnly"); t.exports = r }, { "../helpers": 1, "./cacheOnly": 8 }], 10: [function (e, t, n) { t.exports = { networkOnly: e("./networkOnly"), networkFirst: e("./networkFirst"), cacheOnly: e("./cacheOnly"), cacheFirst: e("./cacheFirst"), fastest: e("./fastest") } }, { "./cacheFirst": 7, "./cacheOnly": 8, "./fastest": 9, "./networkFirst": 11, "./networkOnly": 12 }], 11: [function (e, t, n) { "use strict"; function r(e, t, n) { n = n || {}; var r = n.successResponses || o.successResponses, c = n.networkTimeoutSeconds || o.networkTimeoutSeconds; return i.debug("Strategy: network first [" + e.url + "]", n), i.openCache(n).then(function (t) { var s, a, u = []; if (c) { var f = new Promise(function (r) { s = setTimeout(function () { t.match(e).then(function (e) { var t = n.cache || o.cache, c = Date.now(), s = t.maxAgeSeconds; i.isResponseFresh(e, s, c) && r(e) }) }, 1e3 * c) }); u.push(f) } var h = i.fetchAndCache(e, n).then(function (e) { if (s && clearTimeout(s), r.test(e.status)) return e; throw i.debug("Response was an HTTP error: " + e.statusText, n), a = e, new Error("Bad response") }).catch(function (r) { return i.debug("Network or response error, fallback to cache [" + e.url + "]", n), t.match(e).then(function (e) { if (e) return e; if (a) return a; throw r }) }); return u.push(h), Promise.race(u) }) } var o = e("../options"), i = e("../helpers"); t.exports = r }, { "../helpers": 1, "../options": 4 }], 12: [function (e, t, n) { "use strict"; function r(e, t, n) { return o.debug("Strategy: network only [" + e.url + "]", n), fetch(e) } var o = e("../helpers"); t.exports = r }, { "../helpers": 1 }], 13: [function (e, t, n) { "use strict"; var r = e("./options"), o = e("./router"), i = e("./helpers"), c = e("./strategies"), s = e("./listeners"); i.debug("Service Worker Toolbox is loading"), self.addEventListener("install", s.installListener), self.addEventListener("activate", s.activateListener), self.addEventListener("fetch", s.fetchListener), t.exports = { networkOnly: c.networkOnly, networkFirst: c.networkFirst, cacheOnly: c.cacheOnly, cacheFirst: c.cacheFirst, fastest: c.fastest, router: o, options: r, cache: i.cache, uncache: i.uncache, precache: i.precache } }, { "./helpers": 1, "./listeners": 3, "./options": 4, "./router": 6, "./strategies": 10 }], 14: [function (e, t, n) { t.exports = Array.isArray || function (e) { return "[object Array]" == Object.prototype.toString.call(e) } }, {}], 15: [function (e, t, n) { function r(e, t) { for (var n, r = [], o = 0, i = 0, c = "", s = t && t.delimiter || "/"; null != (n = x.exec(e));) { var f = n[0], h = n[1], p = n.index; if (c += e.slice(i, p), i = p + f.length, h) c += h[1]; else { var l = e[i], d = n[2], m = n[3], g = n[4], v = n[5], w = n[6], y = n[7]; c && (r.push(c), c = ""); var b = null != d && null != l && l !== d, E = "+" === w || "*" === w, R = "?" === w || "*" === w, k = n[2] || s, $ = g || v; r.push({ name: m || o++, prefix: d || "", delimiter: k, optional: R, repeat: E, partial: b, asterisk: !!y, pattern: $ ? u($) : y ? ".*" : "[^" + a(k) + "]+?" }) } } return i < e.length && (c += e.substr(i)), c && r.push(c), r } function o(e, t) { return s(r(e, t)) } function i(e) { return encodeURI(e).replace(/[\/?#]/g, function (e) { return "%" + e.charCodeAt(0).toString(16).toUpperCase() }) } function c(e) { return encodeURI(e).replace(/[?#]/g, function (e) { return "%" + e.charCodeAt(0).toString(16).toUpperCase() }) } function s(e) { for (var t = new Array(e.length), n = 0; n < e.length; n++)"object" == typeof e[n] && (t[n] = new RegExp("^(?:" + e[n].pattern + ")$")); return function (n, r) { for (var o = "", s = n || {}, a = r || {}, u = a.pretty ? i : encodeURIComponent, f = 0; f < e.length; f++) { var h = e[f]; if ("string" != typeof h) { var p, l = s[h.name]; if (null == l) { if (h.optional) { h.partial && (o += h.prefix); continue } throw new TypeError('Expected "' + h.name + '" to be defined') } if (v(l)) { if (!h.repeat) throw new TypeError('Expected "' + h.name + '" to not repeat, but received `' + JSON.stringify(l) + "`"); if (0 === l.length) { if (h.optional) continue; throw new TypeError('Expected "' + h.name + '" to not be empty') } for (var d = 0; d < l.length; d++) { if (p = u(l[d]), !t[f].test(p)) throw new TypeError('Expected all "' + h.name + '" to match "' + h.pattern + '", but received `' + JSON.stringify(p) + "`"); o += (0 === d ? h.prefix : h.delimiter) + p } } else { if (p = h.asterisk ? c(l) : u(l), !t[f].test(p)) throw new TypeError('Expected "' + h.name + '" to match "' + h.pattern + '", but received "' + p + '"'); o += h.prefix + p } } else o += h } return o } } function a(e) { return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g, "\\$1") } function u(e) { return e.replace(/([=!:$\/()])/g, "\\$1") } function f(e, t) { return e.keys = t, e } function h(e) { return e.sensitive ? "" : "i" } function p(e, t) { var n = e.source.match(/\((?!\?)/g); if (n) for (var r = 0; r < n.length; r++)t.push({ name: r, prefix: null, delimiter: null, optional: !1, repeat: !1, partial: !1, asterisk: !1, pattern: null }); return f(e, t) } function l(e, t, n) { for (var r = [], o = 0; o < e.length; o++)r.push(g(e[o], t, n).source); var i = new RegExp("(?:" + r.join("|") + ")", h(n)); return f(i, t) } function d(e, t, n) { return m(r(e, n), t, n) } function m(e, t, n) { v(t) || (n = t || n, t = []), n = n || {}; for (var r = n.strict, o = n.end !== !1, i = "", c = 0; c < e.length; c++) { var s = e[c]; if ("string" == typeof s) i += a(s); else { var u = a(s.prefix), p = "(?:" + s.pattern + ")"; t.push(s), s.repeat && (p += "(?:" + u + p + ")*"), p = s.optional ? s.partial ? u + "(" + p + ")?" : "(?:" + u + "(" + p + "))?" : u + "(" + p + ")", i += p } } var l = a(n.delimiter || "/"), d = i.slice(-l.length) === l; return r || (i = (d ? i.slice(0, -l.length) : i) + "(?:" + l + "(?=$))?"), i += o ? "$" : r && d ? "" : "(?=" + l + "|$)", f(new RegExp("^" + i, h(n)), t) } function g(e, t, n) { return v(t) || (n = t || n, t = []), n = n || {}, e instanceof RegExp ? p(e, t) : v(e) ? l(e, t, n) : d(e, t, n) } var v = e("isarray"); t.exports = g, t.exports.parse = r, t.exports.compile = o, t.exports.tokensToFunction = s, t.exports.tokensToRegExp = m; var x = new RegExp(["(\\\\.)", "([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"), "g") }, { isarray: 14 }], 16: [function (e, t, n) { !function () { var e = Cache.prototype.addAll, t = navigator.userAgent.match(/(Firefox|Chrome)\/(\d+\.)/); if (t) var n = t[1], r = parseInt(t[2]); e && (!t || "Firefox" === n && r >= 46 || "Chrome" === n && r >= 50) || (Cache.prototype.addAll = function (e) { function t(e) { this.name = "NetworkError", this.code = 19, this.message = e } var n = this; return t.prototype = Object.create(Error.prototype), Promise.resolve().then(function () { if (arguments.length < 1) throw new TypeError; return e = e.map(function (e) { return e instanceof Request ? e : String(e) }), Promise.all(e.map(function (e) { "string" == typeof e && (e = new Request(e)); var n = new URL(e.url).protocol; if ("http:" !== n && "https:" !== n) throw new t("Invalid scheme"); return fetch(e.clone()) })) }).then(function (r) { if (r.some(function (e) { return !e.ok })) throw new t("Incorrect response status"); return Promise.all(r.map(function (t, r) { return n.put(e[r], t) })) }).then(function () { }) }, Cache.prototype.add = function (e) { return this.addAll([e]) }) }() }, {}] }, {}, [13])(13) });
+
+
+// *** End of auto-included sw-toolbox code. ***
+
+
+
+// Runtime cache configuration, using the sw-toolbox library.
+{% if cdnRegex %}
+toolbox.router.get(/{{ cdnRegex|raw }}/, toolbox.fastest, {});
+{% endif %}
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/site.json b/github-pages-deploy-action-temp-deployment-folder/site.json
new file mode 100644
index 0000000..6e7460c
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/site.json
@@ -0,0 +1,1594 @@
+{
+ "id": "95f2b045-cfdb-4e35-b29b-e7f71c859987",
+ "title": "hax-the-web",
+ "author": "elmsln",
+ "description": "Project home and documentation for all things HAX",
+ "license": "by-sa",
+ "metadata": {
+ "author": {
+ "name": "ELMS:LN",
+ "image": "",
+ "socialLink": "https://twitter.com/elmsln",
+ "email": "hax@psu.edu"
+ },
+ "site": {
+ "name": "haxtheweb",
+ "created": 1547138719,
+ "updated": 1726516452,
+ "domain": "https://haxtheweb.org/",
+ "git": {
+ "vendor": "github",
+ "branch": "master",
+ "staticBranch": "gh-pages",
+ "url": "git@github.com:elmsln/haxtheweb.org.git",
+ "autoPush": false,
+ "publicRepoUrl": "https://github.com/elmsln/haxtheweb.org/tree/master/"
+ },
+ "static": {
+ "cdn": "",
+ "lastPublished": 1617979997,
+ "publishedLocation": "https://haxtheweb.org/",
+ "offline": false
+ },
+ "settings": {
+ "pathauto": false,
+ "publishPagesOn": true,
+ "sw": false,
+ "forceUpgrade": false,
+ "gaID": null
+ },
+ "version": "9.0.5",
+ "logo": "files/3450183.png",
+ "tags": null
+ },
+ "theme": {
+ "element": "clean-two",
+ "path": "@haxtheweb/clean-two/clean-two.js",
+ "name": "Clean two theme",
+ "thumbnail": "build/es6/node_modules/@haxtheweb/app-hax/lib/assets/images/PartyStyle.svg",
+ "variables": {
+ "image": "assets/banner.jpg",
+ "imageAlt": null,
+ "imageLink": null,
+ "hexCode": "#009dc7",
+ "cssVariable": "--simple-colors-default-theme-purple-7",
+ "icon": "lrn:network"
+ },
+ "regions": {}
+ },
+ "node": {
+ "dynamicElementLoader": {
+ "h5p-element": "@lrnwebcomponents/h5p-element/h5p-element.js",
+ "hax-logo": "@lrnwebcomponents/hax-logo/hax-logo.js",
+ "a11y-gif-player": "@lrnwebcomponents/a11y-gif-player/a11y-gif-player.js",
+ "code-sample": "@lrnwebcomponents/code-sample/code-sample.js",
+ "citation-element": "@lrnwebcomponents/citation-element/citation-element.js",
+ "hero-banner": "@lrnwebcomponents/hero-banner/hero-banner.js",
+ "image-compare-slider": "@lrnwebcomponents/image-compare-slider/image-compare-slider.js",
+ "license-element": "@lrnwebcomponents/license-element/license-element.js",
+ "lrn-aside": "@lrnwebcomponents/lrn-aside/lrn-aside.js",
+ "lrn-math": "@lrnwebcomponents/lrn-math/lrn-math.js",
+ "lrn-table": "@lrnwebcomponents/lrn-table/lrn-table.js",
+ "lrn-vocab": "@lrnwebcomponents/lrn-vocab/lrn-vocab.js",
+ "lrndesign-blockquote": "@lrnwebcomponents/lrndesign-blockquote/lrndesign-blockquote.js",
+ "magazine-cover": "@lrnwebcomponents/magazine-cover/magazine-cover.js",
+ "media-behaviors": "@lrnwebcomponents/media-behaviors/media-behaviors.js",
+ "media-image": "@lrnwebcomponents/media-image/media-image.js",
+ "meme-maker": "@lrnwebcomponents/meme-maker/meme-maker.js",
+ "grid-plate": "@lrnwebcomponents/grid-plate/grid-plate.js",
+ "md-block": "@lrnwebcomponents/md-block/md-block.js",
+ "multiple-choice": "@lrnwebcomponents/multiple-choice/multiple-choice.js",
+ "paper-audio-player": "@lrnwebcomponents/paper-audio-player/paper-audio-player.js",
+ "person-testimonial": "@lrnwebcomponents/person-testimonial/person-testimonial.js",
+ "place-holder": "@lrnwebcomponents/place-holder/place-holder.js",
+ "q-r": "@lrnwebcomponents/q-r/q-r.js",
+ "full-width-image": "@lrnwebcomponents/full-width-image/full-width-image.js",
+ "self-check": "@lrnwebcomponents/self-check/self-check.js",
+ "simple-concept-network": "@lrnwebcomponents/simple-concept-network/simple-concept-network.js",
+ "stop-note": "@lrnwebcomponents/stop-note/stop-note.js",
+ "tab-list": "@lrnwebcomponents/tab-list/tab-list.js",
+ "task-list": "@lrnwebcomponents/task-list/task-list.js",
+ "video-player": "@lrnwebcomponents/video-player/video-player.js",
+ "wave-player": "@lrnwebcomponents/wave-player/wave-player.js",
+ "wikipedia-query": "@lrnwebcomponents/wikipedia-query/wikipedia-query.js",
+ "lrndesign-gallery": "@lrnwebcomponents/lrndesign-gallery/lrndesign-gallery.js",
+ "lrndesign-timeline": "@lrnwebcomponents/lrndesign-timeline/lrndesign-timeline.js",
+ "html-block": "@lrnwebcomponents/html-block/html-block.js",
+ "user-action": "@lrnwebcomponents/user-action/user-action.js",
+ "rss-items": "@lrnwebcomponents/rss-items/rss-items.js"
+ },
+ "fields": {}
+ }
+ },
+ "items": [
+ {
+ "id": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "indent": "1",
+ "location": "pages/documentation-1/hax-development/index.html",
+ "slug": "documentation-1/hax-development",
+ "order": "0",
+ "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
+ "title": "HAX development",
+ "description": "Include HAX in your projectThe developers docs will lay out the many specifications that make HAX possible including core concepts, different schema's it leverages ad how to define app store spec in ",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-587de126-437b-4864-a3ea-54078837127c",
+ "indent": "1",
+ "location": "pages/item-587de126-437b-4864-a3ea-54078837127c/index.html",
+ "slug": "integrations-1/hax11ty",
+ "order": "0",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "HAX11ty",
+ "description": "HAX + 11ty = HAX11ty! HAX11ty gives you the best of SEO from 11ty while using the HAX editor and the HAXcms theme engine for presenting material. This gives you the SPA capabilities of fast loading r",
+ "metadata": {
+ "created": 1597690877,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 4,
+ "schema": [
+ {
+ "resource": "#d8a4a0fc-7cf5-800c-41cd-cdae27ae49c4",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ }
+ ],
+ "tags": {
+ "p": 4,
+ "video-player": 1
+ },
+ "elements": 5
+ }
+ }
+ },
+ {
+ "id": "item-36c4fc60-67c0-43c2-8f71-c6a117e8b7d6",
+ "indent": "4",
+ "location": "pages/documentation-1/haxcms/theming/core-elements/query-examples/index.html",
+ "slug": "documentation-1/haxcms/theming/core-elements/query-examples",
+ "order": "0",
+ "parent": "item-a84c35ec-85c8-4c7c-b4ab-80c2fbc87550",
+ "title": "Query examples",
+ "description": " Hold up there. You didn't cover any of the query tags in that last section!Ok ok, here's the deal. Queries are so important that they needed their own section. Calm down Dwight we'll handle that n",
+ "metadata": {
+ "created": 1553349518,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/2019-03-23_10-51-10.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/2019-03-23_10-51-10.jpg",
+ "url": "files/2019-03-23_10-51-10.jpg",
+ "type": "image/jpeg",
+ "name": "2019-03-23_10-51-10.jpg",
+ "size": 54637
+ }
+ ]
+ }
+ },
+ {
+ "id": "item-asd7dab5-8208-65e3-c3e4-267f233f60553",
+ "indent": "1",
+ "location": "pages/welcome/what-is-hax/index.html",
+ "slug": "welcome/what-is-hax",
+ "order": "0",
+ "parent": "item-welcome",
+ "title": "What is HAX",
+ "description": "HAX - Headless Authoring eXperienceHAX is a WYSIWYG unlike any other. You extend your world by extending the web through the web component standard. HAX has a simple schema and integrations to allow",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/sites/haxtheweb/files//sourceviewthispage.jpg",
+ "fullUrl": "/sites/haxtheweb/files/sourceviewthispage.jpg",
+ "url": "files/sourceviewthispage.jpg",
+ "type": "image/jpeg",
+ "name": "sourceviewthispage.jpg",
+ "size": 34616
+ }
+ ],
+ "readtime": 2,
+ "contentDetails": {
+ "headings": 4,
+ "paragraphs": 8,
+ "schema": [],
+ "tags": {
+ "full-width-image": 1,
+ "h2": 4,
+ "p": 8,
+ "code-sample": 1,
+ "meme-maker": 1,
+ "ul": 1,
+ "img": 1
+ },
+ "elements": 17
+ }
+ }
+ },
+ {
+ "id": "item-692eb91c-4003-3429-5d9f-caac64691849",
+ "indent": "2",
+ "location": "pages/documentation-1/hax-development/wcfactory-tooling/index.html",
+ "slug": "documentation-1/hax-development/wcfactory-tooling",
+ "order": "0",
+ "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "title": "WCFactory Tooling",
+ "description": "",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-welcome",
+ "indent": 0,
+ "location": "pages/welcome/index.html",
+ "slug": "welcome",
+ "order": 0,
+ "parent": null,
+ "title": "Our Mission",
+ "description": "We're on a mission to empower the next billion creators to share their voice with the world and in doing so, create a less toxic web. Regardless offfff ability, platform,tribe or income",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1661452015,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/demo.csv",
+ "fullUrl": "/_sites/haxtheweb/files/demo.csv",
+ "url": "files/demo.csv",
+ "type": "text/plain",
+ "name": "demo.csv",
+ "size": 830
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/demo.csv",
+ "fullUrl": "/_sites/haxtheweb/files/demo.csv",
+ "url": "files/demo.csv",
+ "type": "text/plain",
+ "name": "demo.csv",
+ "size": 830
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/ngdle.png",
+ "fullUrl": "/_sites/haxtheweb/files/ngdle.png",
+ "url": "files/ngdle.png",
+ "type": "image/png",
+ "name": "ngdle.png",
+ "size": 307196
+ }
+ ],
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 2,
+ "paragraphs": 6,
+ "schema": [
+ {
+ "resource": "#13f8e41a-3150-15b2-162c-327f1132477f",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ },
+ {
+ "resource": "#18d556e9-a1d7-3069-81d9",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ }
+ ],
+ "tags": {
+ "page-break": 1,
+ "p": 6,
+ "grid-plate": 1,
+ "video-player": 1,
+ "code-sample": 1,
+ "h3": 2,
+ "ul": 1
+ },
+ "elements": 13
+ },
+ "published": true,
+ "locked": false
+ }
+ },
+ {
+ "id": "item-96d00871-d866-c65e-b7f0-4e242bde5b15",
+ "indent": "3",
+ "location": "pages/documentation-1/hax-development/hax-app-store/apps/index.html",
+ "slug": "documentation-1/hax-development/hax-app-store/apps",
+ "order": "0",
+ "parent": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
+ "title": "apps",
+ "description": "",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-f0af8879-a79c-4d1c-afc4-e23c32f52dc4",
+ "indent": "3",
+ "location": "pages/documentation-1/haxcms/theming/css-vars/index.html",
+ "slug": "documentation-1/haxcms/theming/css-vars",
+ "order": "0",
+ "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
+ "title": "CSS vars",
+ "description": "CSS can be modified via CSS variables. CSS variables create a happy middle ground between the constraints of Shadow DOM (namely that styles are fully encapsulated) and designers wanting flexibility a",
+ "metadata": {
+ "created": 1553349518,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-dfd62788-ba48-4051-a869-986e5956864f",
+ "indent": "2",
+ "location": "pages/documentation-1/haxcms/concepts/index.html",
+ "slug": "documentation-1/haxcms/concepts",
+ "order": "0",
+ "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "title": "Concepts",
+ "description": "HAXcms seeks to be a microsite generator and manager that doesn't require any command line in order to operate. HAXcms leverages HAX to give a best in class authoring experience while HAXcms seeks to",
+ "metadata": {
+ "created": 1550643005,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-e3dafe1a-1f50-1834-68f3-9f378e4ddda5",
+ "indent": "2",
+ "location": "pages/documentation-1/ux-concepts/add/index.html",
+ "slug": "documentation-1/ux-concepts/add",
+ "order": "0",
+ "parent": "item-06233713-d866-3351-81da-841d3931144c",
+ "title": "Add Content",
+ "description": "Add Content is how you create and add complex blocks to the HAX page editor. These blocks can be variable based on what you chose to include (see appstore) but ultimately are just adding web compon",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/sites/haxtheweb/files/Screenshot from 2020-08-17 14-34-32.png",
+ "fullUrl": "/sites/haxtheweb/files/Screenshot from 2020-08-17 14-34-32.png",
+ "url": "files/Screenshot from 2020-08-17 14-34-32.png",
+ "type": "image/png",
+ "name": "Screenshot from 2020-08-17 14-34-32.png",
+ "size": 78391
+ }
+ ],
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 1,
+ "schema": [],
+ "tags": {
+ "p": 1,
+ "img": 1
+ },
+ "elements": 2
+ }
+ }
+ },
+ {
+ "id": "item-275a0928-60ab-b7ce-c2b6-d0e35826498b",
+ "indent": "1",
+ "location": "pages/documentation-1/core-concepts/index.html",
+ "slug": "documentation-1/core-concepts",
+ "order": "1",
+ "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
+ "title": "Core concepts",
+ "description": "",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-39074718-758f-d51b-1dc5-15cfbb79e44c",
+ "indent": "2",
+ "location": "pages/documentation-1/hax-development/hello-world-element/index.html",
+ "slug": "documentation-1/hax-development/hello-world-element",
+ "order": "1",
+ "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "title": "hello-world element",
+ "description": "Let's see what goes into the element called @lrnwebcomponents/example-hax-element in order to learn how we can wire anything up to HAXeditor.@lrnwebcomponents/example-hax-element/example-hax-elem",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617806663,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 1,
+ "paragraphs": 1,
+ "schema": [],
+ "tags": {
+ "p": 1,
+ "h2": 1,
+ "code-sample": 1
+ },
+ "elements": 3
+ }
+ }
+ },
+ {
+ "id": "item-650eaa59-478c-4674-8ef3-93e4b43e2310",
+ "indent": "1",
+ "location": "pages/welcome/why-haxcms-1/index.html",
+ "slug": "welcome/why-haxcms-1",
+ "order": "1",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "HAXcms",
+ "description": "HAXcms powers this website and is a hybrid static site generator, a new class of CMS. It's hybrid in that everything is written to static like a static site generator and it's 100% decoupled via web ",
+ "metadata": {
+ "created": 1563972322,
+ "updated": 1617805490,
+ "readtime": 2,
+ "contentDetails": {
+ "headings": 6,
+ "paragraphs": 5,
+ "schema": [
+ {
+ "typeof": "oer:Assessment",
+ "resource": "#dd2feacf-ed4a-dcb0-b85d",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ }
+ ],
+ "tags": {
+ "grid-plate": 1,
+ "h2": 2,
+ "ul": 3,
+ "p": 5,
+ "h4": 4,
+ "img": 1,
+ "multiple-choice": 1
+ },
+ "elements": 17
+ }
+ }
+ },
+ {
+ "id": "item-5a6e6643-3834-4ac5-ae70-0090263759cb",
+ "indent": "2",
+ "location": "pages/documentation-1/haxcms/installation/index.html",
+ "slug": "documentation-1/haxcms/installation",
+ "order": "1",
+ "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "title": "Installation",
+ "description": "Generic PHP install directionsHave PHP? well then you can setup HAXcms pretty quick. Just download HAXcms and navigate to its directory in a browser. It'll attempt to automatically install (which is ",
+ "metadata": {
+ "created": 1550643005,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/mampstructure.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/mampstructure.jpg",
+ "url": "files/mampstructure.jpg",
+ "type": "image/jpeg",
+ "name": "mampstructure.jpg",
+ "size": 15099
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/mampstart.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/mampstart.jpg",
+ "url": "files/mampstart.jpg",
+ "type": "image/jpeg",
+ "name": "mampstart.jpg",
+ "size": 12670
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/mamppage.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/mamppage.jpg",
+ "url": "files/mamppage.jpg",
+ "type": "image/jpeg",
+ "name": "mamppage.jpg",
+ "size": 17086
+ }
+ ],
+ "readtime": 2,
+ "contentDetails": {
+ "headings": 6,
+ "paragraphs": 13,
+ "schema": [
+ {
+ "resource": "#990ebe5c-04c8-58b2-385a",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ },
+ {
+ "resource": "#4e5cac2b-786f-596c-b394",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ }
+ ],
+ "tags": {
+ "h2": 4,
+ "p": 13,
+ "code-sample": 2,
+ "h3": 2,
+ "media-image": 2,
+ "img": 1,
+ "ul": 1
+ },
+ "elements": 25
+ }
+ }
+ },
+ {
+ "id": "item-a91393ea-31f8-30bd-888f-275a05e08e0a",
+ "indent": "3",
+ "location": "pages/documentation-1/hax-development/hax-app-store/blox/index.html",
+ "slug": "documentation-1/hax-development/hax-app-store/blox",
+ "order": "1",
+ "parent": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
+ "title": "blox",
+ "description": "",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-504d6323-873d-49e3-9de0-ffa56c28fdf5",
+ "indent": "1",
+ "location": "pages/get-involved-1/index.html",
+ "slug": "get-involved-1",
+ "order": "1",
+ "parent": "item-welcome",
+ "title": "Get Involved!",
+ "description": "Join our communityJoin us on the HAXTheWeb Slack channelJoin us for HAXcamp Un-code every Friday 3 pm - 5 pm (EST)Follow / use the #HAXTheWeb hash tagJoin our projectsHAXcms - That which ",
+ "metadata": {
+ "created": 1553197584,
+ "updated": 1617805490,
+ "readtime": 2,
+ "contentDetails": {
+ "headings": 3,
+ "paragraphs": 6,
+ "schema": [],
+ "tags": {
+ "h2": 3,
+ "ul": 3,
+ "p": 6,
+ "meme-maker": 1
+ },
+ "elements": 13
+ }
+ }
+ },
+ {
+ "id": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "indent": 0,
+ "location": "pages/integrations-1/index.html",
+ "slug": "integrations-1",
+ "order": "1",
+ "parent": null,
+ "title": "Integrations",
+ "description": "HAX provides plenty of ways to integrate into the platforms you already use! Here are some of the plugins and integrations below this heading.Some things a liittle bit crazyCode Pen?!Demonstration",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 1,
+ "paragraphs": 1,
+ "schema": [],
+ "tags": {
+ "p": 1,
+ "h2": 1,
+ "ul": 1
+ },
+ "elements": 3
+ }
+ }
+ },
+ {
+ "id": "item-3859b3ac-1ef5-45b4-909c-3892f97a9f4c",
+ "indent": "3",
+ "location": "pages/documentation-1/haxcms/theming/skin-a-site/index.html",
+ "slug": "documentation-1/haxcms/theming/skin-a-site",
+ "order": "1",
+ "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
+ "title": "Skin a site",
+ "description": "Theme skinning is the easiest way to build a decent looking theme in HAXcms. This method is geared toward people that know CSS and HTML but can't get into the weeds of web components or javascript.Wo",
+ "metadata": {
+ "created": 1553354507,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-eca7c8a4-393a-4e68-8cb4-440e94683738",
+ "indent": "2",
+ "location": "pages/item-eca7c8a4-393a-4e68-8cb4-440e94683738/index.html",
+ "slug": "documentation-1/ux-concepts/block-settings",
+ "order": "1",
+ "parent": "item-06233713-d866-3351-81da-841d3931144c",
+ "title": "Block settings",
+ "description": "Block settings will change contextually based on which block has been selected in the editable area of the page. In this screenshot, a paragraph has been selected and so the icon associated with it is",
+ "metadata": {
+ "created": 1597689709,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/sites/haxtheweb/files/Screenshot from 2020-08-17 14-42-07.png",
+ "fullUrl": "/sites/haxtheweb/files/Screenshot from 2020-08-17 14-42-07.png",
+ "url": "files/Screenshot from 2020-08-17 14-42-07.png",
+ "type": "image/png",
+ "name": "Screenshot from 2020-08-17 14-42-07.png",
+ "size": 46191
+ },
+ {
+ "path": "/var/www/html/sites/haxtheweb/files/Screenshot from 2020-08-17 14-46-06.png",
+ "fullUrl": "/sites/haxtheweb/files/Screenshot from 2020-08-17 14-46-06.png",
+ "url": "files/Screenshot from 2020-08-17 14-46-06.png",
+ "type": "image/png",
+ "name": "Screenshot from 2020-08-17 14-46-06.png",
+ "size": 66054
+ }
+ ],
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 2,
+ "paragraphs": 2,
+ "schema": [],
+ "tags": {
+ "p": 2,
+ "h2": 2,
+ "img": 2
+ },
+ "elements": 6
+ }
+ }
+ },
+ {
+ "id": "item-44a138ea-5122-4a2b-b2ce-8bf1fb11bb29",
+ "indent": "2",
+ "location": "pages/documentation-1/haxcms/structure/index.html",
+ "slug": "documentation-1/haxcms/structure",
+ "order": "2",
+ "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "title": "Structure",
+ "description": "By design we've got a very simple structure. The goal of HAXcms isn't to lock you into anything and so we've simplified our file structure over other solutions.The key directories / files include:fi",
+ "metadata": {
+ "created": 1550643005,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/2019-02-20_01-26-01.png",
+ "fullUrl": "/_sites/haxtheweb/files/2019-02-20_01-26-01.png",
+ "url": "files/2019-02-20_01-26-01.png",
+ "type": "image/png",
+ "name": "2019-02-20_01-26-01.png",
+ "size": 19448
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/2019-02-20_01-26-10.png",
+ "fullUrl": "/_sites/haxtheweb/files/2019-02-20_01-26-10.png",
+ "url": "files/2019-02-20_01-26-10.png",
+ "type": "image/png",
+ "name": "2019-02-20_01-26-10.png",
+ "size": 59026
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/2019-02-25_16-22-25.png",
+ "fullUrl": "/_sites/haxtheweb/files/2019-02-25_16-22-25.png",
+ "url": "files/2019-02-25_16-22-25.png",
+ "type": "image/png",
+ "name": "2019-02-25_16-22-25.png",
+ "size": 37234
+ }
+ ]
+ }
+ },
+ {
+ "id": "item-f1c8e3a4-eddb-806a-8a3a-206c1e33f7a9",
+ "indent": "2",
+ "location": "pages/documentation-1/hax-development/hax-schema/index.html",
+ "slug": "documentation-1/hax-development/hax-schema",
+ "order": "2",
+ "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "title": "HAX schema",
+ "description": "Implementing HAXSchemaIn order for your element to talk to the HAX editor, you need to implement static get haxProperties() on your element. This callback either returns a String based location of ",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617979979,
+ "readtime": 5,
+ "contentDetails": {
+ "headings": 6,
+ "paragraphs": 7,
+ "schema": [],
+ "tags": {
+ "h2": 5,
+ "p": 7,
+ "ul": 1,
+ "code-sample": 5,
+ "h3": 1,
+ "grid-plate": 1,
+ "img": 3
+ },
+ "elements": 23
+ }
+ }
+ },
+ {
+ "id": "item-29e7d7f5-db3e-3ef0-733a-ed41d88f2835",
+ "indent": "1",
+ "location": "pages/welcome/solutions/index.html",
+ "slug": "welcome/solutions",
+ "order": "2",
+ "parent": "item-welcome",
+ "title": "Solutions",
+ "description": "Modularity is key to HAX success. Here are some of the solutions that HAX provides which leverage the HAXeditor interface.HAX editorHAX or HAXeditor is the editor of the future you're using in this ",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "readtime": 2,
+ "contentDetails": {
+ "headings": 4,
+ "paragraphs": 9,
+ "schema": [
+ {
+ "resource": "#832335f3-7442-7d40-0d56",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ }
+ ],
+ "tags": {
+ "p": 9,
+ "h2": 3,
+ "h3": 1,
+ "media-image": 1
+ },
+ "elements": 14
+ },
+ "published": true
+ }
+ },
+ {
+ "id": "item-17449951-7504-468a-b315-4388b85c00e3",
+ "indent": "3",
+ "location": "pages/documentation-1/haxcms/theming/web-components/index.html",
+ "slug": "documentation-1/haxcms/theming/web-components",
+ "order": "2",
+ "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
+ "title": "Web components",
+ "description": "Do you know full on web component development? Well, you can build a new theme from scratch. The best way to learn is by picking a part some of our examples. For this we'll analyze the haxcms-slide-th",
+ "metadata": {
+ "created": 1553349518,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-5a9ea17e-63ce-96f3-e94f-d5282b290661",
+ "indent": "1",
+ "location": "pages/integrations-1/wordpress/index.html",
+ "slug": "integrations-1/wordpress",
+ "order": "2",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "WordPress",
+ "description": "We support WordPress too! In order to use HAX though you'll want to replace the Gutenberg editor. The following steps will help you get it up and running.Get the Classic Editor. This plugin helps re",
+ "metadata": {
+ "created": 1549428503,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 1,
+ "schema": [],
+ "tags": {
+ "p": 1,
+ "ol": 1
+ },
+ "elements": 2
+ }
+ }
+ },
+ {
+ "id": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
+ "indent": 0,
+ "location": "pages/documentation-1/index.html",
+ "slug": "documentation-1",
+ "order": 2,
+ "parent": null,
+ "title": "Documentation",
+ "description": "HAX may seem complex, but it's built on a series of standards that will never break. As a result of the complexity of these standards, there are things you should know prior to digging into HAXedit",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1661452038,
+ "readtime": 1,
+ "files": [
+ {
+ "path": "/var/www/html/sites/haxtheweb/files/3450183.png",
+ "fullUrl": "/sites/haxtheweb/files/3450183.png",
+ "url": "files/3450183.png",
+ "type": "image/png",
+ "name": "3450183.png",
+ "size": 9992
+ }
+ ],
+ "contentDetails": {
+ "headings": 1,
+ "paragraphs": 3,
+ "schema": [
+ {
+ "resource": "#4e04ff57-98de-f227-681f-d3425ba60f04",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ }
+ ],
+ "tags": {
+ "page-break": 1,
+ "p": 3,
+ "h3": 1,
+ "grid-plate": 1
+ },
+ "elements": 6
+ },
+ "published": true,
+ "locked": false
+ }
+ },
+ {
+ "id": "item-faaa1198-10c7-ff30-ece6-01b30a9c0f85",
+ "indent": "3",
+ "location": "pages/documentation-1/hax-development/hax-app-store/stax/index.html",
+ "slug": "documentation-1/hax-development/hax-app-store/stax",
+ "order": "2",
+ "parent": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
+ "title": "stax",
+ "description": "Stax are what most WYSIWYG systems would call Templates. Stax in HAX are a series of HAX element schema's in succession.Below is a definition for the \"example lesson\" seen above. This is a larger ex",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "readtime": 4
+ }
+ },
+ {
+ "id": "item-251f207e-4046-a4b0-40ce-7c28fe38ae23",
+ "indent": "2",
+ "location": "pages/documentation-1/ux-concepts/find/index.html",
+ "slug": "documentation-1/ux-concepts/find",
+ "order": "2",
+ "parent": "item-06233713-d866-3351-81da-841d3931144c",
+ "title": "Search",
+ "description": "Search is a data interoperability layer to HAX where web components data binding shines. Search is able to stitch remote data together with local web components in order to streamline workflows. You ",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "published": true,
+ "files": [
+ {
+ "path": "/var/www/html/sites/haxtheweb/files/Screenshot from 2020-08-17 14-36-15.png",
+ "fullUrl": "/sites/haxtheweb/files/Screenshot from 2020-08-17 14-36-15.png",
+ "url": "files/Screenshot from 2020-08-17 14-36-15.png",
+ "type": "image/png",
+ "name": "Screenshot from 2020-08-17 14-36-15.png",
+ "size": 135869
+ },
+ {
+ "path": "/var/www/html/sites/haxtheweb/files/Screenshot from 2020-08-17 14-43-47.png",
+ "fullUrl": "/sites/haxtheweb/files/Screenshot from 2020-08-17 14-43-47.png",
+ "url": "files/Screenshot from 2020-08-17 14-43-47.png",
+ "type": "image/png",
+ "name": "Screenshot from 2020-08-17 14-43-47.png",
+ "size": 105778
+ }
+ ],
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 1,
+ "schema": [],
+ "tags": {
+ "p": 1,
+ "img": 1
+ },
+ "elements": 2
+ }
+ }
+ },
+ {
+ "id": "item-06233713-d866-3351-81da-841d3931144c",
+ "indent": "1",
+ "location": "pages/documentation-1/ux-concepts/index.html",
+ "slug": "documentation-1/ux-concepts",
+ "order": "2",
+ "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
+ "title": "UX concepts",
+ "description": "The HAX UI can be broken down into three major production concepts. Content authors are either:Adding something they already haveEditing the Settings of the activated element on the pageSearch for ",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 1,
+ "schema": [],
+ "tags": {
+ "p": 1,
+ "ol": 1
+ },
+ "elements": 2
+ }
+ }
+ },
+ {
+ "id": "item-0e4cc53c-944f-658a-5440-eacc5a1c0358",
+ "indent": "1",
+ "location": "pages/documentation-1/related-technologies/index.html",
+ "slug": "documentation-1/related-technologies",
+ "order": "3",
+ "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
+ "title": "Related technologies",
+ "description": "",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-a839d5c1-3321-a395-c032-4ea8ea2cfa27",
+ "indent": "3",
+ "location": "pages/documentation-1/hax-development/hax-app-store/autoloader/index.html",
+ "slug": "documentation-1/hax-development/hax-app-store/autoloader",
+ "order": "3",
+ "parent": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
+ "title": "autoloader",
+ "description": "Autoloader is waaayyy easier to implement then the other parts of the appstore spec and is probably the most important as it loads all the elements that will be available to your users. All it is is a",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617979603,
+ "readtime": 2,
+ "contentDetails": {
+ "headings": 4,
+ "paragraphs": 5,
+ "schema": [],
+ "tags": {
+ "p": 5,
+ "ol": 1,
+ "h3": 1,
+ "code-sample": 1,
+ "h4": 3
+ },
+ "elements": 11
+ }
+ }
+ },
+ {
+ "id": "item-aa589faa-e860-4221-82fa-df6d57328ac2",
+ "indent": "2",
+ "location": "pages/item-aa589faa-e860-4221-82fa-df6d57328ac2/index.html",
+ "slug": "documentation-1/ux-concepts/templates-and-layouts",
+ "order": "3",
+ "parent": "item-06233713-d866-3351-81da-841d3931144c",
+ "title": "Templates and Layouts",
+ "description": "Templates and layouts allow you to drop in pre-built pieces of content structure. This might be a series of images or an example of content that could be written.",
+ "metadata": {
+ "created": 1597689709,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 1,
+ "schema": [],
+ "tags": {
+ "p": 1,
+ "img": 1
+ },
+ "elements": 2
+ }
+ }
+ },
+ {
+ "id": "item-a84c35ec-85c8-4c7c-b4ab-80c2fbc87550",
+ "indent": "3",
+ "location": "pages/documentation-1/haxcms/theming/core-elements/index.html",
+ "slug": "documentation-1/haxcms/theming/core-elements",
+ "order": "3",
+ "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
+ "title": "Core elements",
+ "description": "While you're not required to use them, HAXcms supplies a series of elements that can make theme development effortless. You can see the source of these in greater detail under the theme directory of h",
+ "metadata": {
+ "created": 1552437937,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/2019-03-12_16-45-51.png",
+ "fullUrl": "/_sites/haxtheweb/files/2019-03-12_16-45-51.png",
+ "url": "files/2019-03-12_16-45-51.png",
+ "type": "image/png",
+ "name": "2019-03-12_16-45-51.png",
+ "size": 212153
+ }
+ ]
+ }
+ },
+ {
+ "id": "item-49d727fb-b5c8-871a-3979-a5143116946d",
+ "indent": 0,
+ "location": "pages/f-a-q-1/index.html",
+ "slug": "f-a-q-1",
+ "order": 3,
+ "parent": null,
+ "title": "F.A.Q.",
+ "description": "Are web components ready for prime time?Yes. Web components effectively turn the HTML of a site into a consistent API. HAXeditor leverages this approach and standardizes its usage in order to ",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1661452776,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/pubwork1.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/pubwork1.jpg",
+ "url": "files/pubwork1.jpg",
+ "type": "image/jpeg",
+ "name": "pubwork1.jpg",
+ "size": 51662
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/IMG_20190127_153429.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/IMG_20190127_153429.jpg",
+ "url": "files/IMG_20190127_153429.jpg",
+ "type": "image/jpeg",
+ "name": "IMG_20190127_153429.jpg",
+ "size": 27242
+ }
+ ],
+ "readtime": 5,
+ "contentDetails": {
+ "headings": 6,
+ "paragraphs": 11,
+ "schema": [
+ {
+ "resource": "#4afe6e57-7d57-53d4-cca3-2512c120ffcc",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ }
+ ],
+ "tags": {
+ "page-break": 1,
+ "h2": 6,
+ "p": 11,
+ "ul": 3
+ },
+ "elements": 21
+ },
+ "published": true,
+ "locked": false
+ }
+ },
+ {
+ "id": "item-ca8c6ba8-c012-8ace-343a-3701f20609e9",
+ "indent": "1",
+ "location": "pages/integrations-1/drupal/index.html",
+ "slug": "integrations-1/drupal",
+ "order": "3",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "Drupal",
+ "description": "Try on SimplyTest.meTry HAX on Simplytest me in a few steps without needing to install anythingGo to Simplytest me and pick HAX modulePick 9.x,8.x or 7.xLog in, go to Administration -> Configurat",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/scale-50/d8cdnimage.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/scale-50/d8cdnimage.jpg",
+ "url": "files/scale-50/d8cdnimage.jpg",
+ "type": "image/jpeg",
+ "name": "d8cdnimage.jpg",
+ "size": 136928
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/scale-50/haxd8simply.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/scale-50/haxd8simply.jpg",
+ "url": "files/scale-50/haxd8simply.jpg",
+ "type": "image/jpeg",
+ "name": "haxd8simply.jpg",
+ "size": 91967
+ }
+ ],
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 3,
+ "paragraphs": 3,
+ "schema": [
+ {
+ "resource": "#3b994c7f-952f-e85f-48b3",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ }
+ ],
+ "tags": {
+ "h2": 2,
+ "p": 3,
+ "ol": 2,
+ "grid-plate": 1,
+ "h3": 1,
+ "wikipedia-query": 1
+ },
+ "elements": 10
+ }
+ }
+ },
+ {
+ "id": "item-01e0f49a-190a-4c8d-ae0e-83d62675e070",
+ "indent": "1",
+ "location": "pages/welcome/roadmap-1/index.html",
+ "slug": "welcome/roadmap-1",
+ "order": "3",
+ "parent": "item-welcome",
+ "title": "Roadmap",
+ "description": "HAX encompasses many different projectsThis roadmap illustrates all the projects related to HAX and ELMS:LN, which HAX comes from. The little settings gears found throughout illustrate enhancements a",
+ "metadata": {
+ "created": 1565290387,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/sites/haxtheweb/files//haxrelationships.jpg",
+ "fullUrl": "/sites/haxtheweb/files/haxrelationships.jpg",
+ "url": "files/haxrelationships.jpg",
+ "type": "image/jpeg",
+ "name": "haxrelationships.jpg",
+ "size": 88416
+ },
+ {
+ "path": "/var/www/html/sites/haxtheweb/files//Roadmap.jpg",
+ "fullUrl": "/sites/haxtheweb/files/Roadmap.jpg",
+ "url": "files/Roadmap.jpg",
+ "type": "image/jpeg",
+ "name": "Roadmap.jpg",
+ "size": 108725
+ },
+ {
+ "path": "/var/www/html/sites/haxtheweb/files/headshot272229.61999999825.jpg",
+ "fullUrl": "/sites/haxtheweb/files/headshot272229.61999999825.jpg",
+ "url": "files/headshot272229.61999999825.jpg",
+ "type": "image/jpeg",
+ "name": "headshot272229.61999999825.jpg",
+ "size": 121898
+ }
+ ],
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 2,
+ "paragraphs": 6,
+ "schema": [],
+ "tags": {
+ "h3": 2,
+ "p": 6,
+ "img": 2
+ },
+ "elements": 10
+ }
+ }
+ },
+ {
+ "id": "item-5df45272-f6b9-4f4f-b650-16c47aeac6fb",
+ "indent": "2",
+ "location": "pages/documentation-1/haxcms/publishing/index.html",
+ "slug": "documentation-1/haxcms/publishing",
+ "order": "3",
+ "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "title": "Publishing",
+ "description": "HAXcms requires being published in order to be visible to other people. Working locally or on Desktop or on a server, is akin to you writing a document on your computer. It's not shared with anyone. W",
+ "metadata": {
+ "created": 1550643005,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/gitpublishingdata.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/gitpublishingdata.jpg",
+ "url": "files/gitpublishingdata.jpg",
+ "type": "image/jpeg",
+ "name": "gitpublishingdata.jpg",
+ "size": 12847
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/pubwork1.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/pubwork1.jpg",
+ "url": "files/pubwork1.jpg",
+ "type": "image/jpeg",
+ "name": "pubwork1.jpg",
+ "size": 51662
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/pubwork2.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/pubwork2.jpg",
+ "url": "files/pubwork2.jpg",
+ "type": "image/jpeg",
+ "name": "pubwork2.jpg",
+ "size": 70772
+ }
+ ]
+ }
+ },
+ {
+ "id": "item-44cc230b-07db-442a-90cf-687e2d089a5d",
+ "indent": "2",
+ "location": "pages/item-44cc230b-07db-442a-90cf-687e2d089a5d/index.html",
+ "slug": "haxhooks",
+ "order": "3",
+ "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "title": "haxHooks",
+ "description": "Elements can integrate deeply into HAX state management using what we call \"hax hooks\". By supplying a method on your web component like haxHooks() you are magically able to tap into different li",
+ "metadata": {
+ "created": 1617802345,
+ "updated": 1617805490,
+ "readtime": 5,
+ "contentDetails": {
+ "headings": 10,
+ "paragraphs": 11,
+ "schema": [],
+ "tags": {
+ "p": 11,
+ "h2": 2,
+ "ul": 2,
+ "code-sample": 1,
+ "h3": 8
+ },
+ "elements": 24
+ }
+ }
+ },
+ {
+ "id": "item-c86470aa-0295-4c9d-9f17-48ad79ab05be",
+ "indent": "1",
+ "location": "pages/welcome/presentations/index.html",
+ "slug": "welcome/presentations",
+ "order": "4",
+ "parent": "item-welcome",
+ "title": "Presentations",
+ "description": "This is the youtube playlist of all things HAXTheWebThis playlist is updated on a regular basis so make sure to subscribe to the youtube channel for updates. There's also many other playlists relat",
+ "metadata": {
+ "created": 1552910817,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 2,
+ "schema": [],
+ "tags": {
+ "p": 2,
+ "iframe": 1
+ },
+ "elements": 3
+ }
+ }
+ },
+ {
+ "id": "item-4824986b-1897-568d-fdd9-4b882ea6ee1f",
+ "indent": "1",
+ "location": "pages/integrations-1/backdropcms/index.html",
+ "slug": "integrations-1/backdropcms",
+ "order": "4",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "BackdropCMS",
+ "description": "Getting HAX setup in BackdropCMSSearch for HAX on BackdropCMS.org or from within your Backdrop siteFollow the instructions in the Web components module README for buildingDon't worry, HAX requ",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 1,
+ "paragraphs": 1,
+ "schema": [
+ {
+ "resource": "#5b790bef-7d78-f85e-104d",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ }
+ ],
+ "tags": {
+ "p": 1,
+ "h2": 1,
+ "ol": 1,
+ "media-image": 1
+ },
+ "elements": 4
+ }
+ }
+ },
+ {
+ "id": "item-7ab2e2fd-622f-4a0f-9967-599410c6cd43",
+ "indent": 0,
+ "location": "pages/scavenger-hunt-1/index.html",
+ "slug": "scavenger-hunt-1",
+ "order": "4",
+ "parent": null,
+ "title": "Scavenger Hunt",
+ "description": "Become part of our dynasty franchise **by wearing a cool jerseyWe're building the greatest roster of people ever to HAX the complacency of our industry. Take the HAX scavenger hunt at the next ev",
+ "metadata": {
+ "created": 1563970537,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 1,
+ "paragraphs": 2,
+ "schema": [
+ {
+ "typeof": "oer:SupportingMaterial",
+ "resource": "#238ee75a-de4d-02a9-3755",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ }
+ ],
+ "tags": {
+ "h3": 1,
+ "p": 2,
+ "ul": 1,
+ "task-list": 1,
+ "meme-maker": 1
+ },
+ "elements": 6
+ }
+ }
+ },
+ {
+ "id": "item-7f3dd690-4c3f-4616-baa5-159b9a15809c",
+ "indent": "3",
+ "location": "pages/documentation-1/haxcms/theming/dev-workflows/index.html",
+ "slug": "documentation-1/haxcms/theming/dev-workflows",
+ "order": "4",
+ "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
+ "title": "Dev workflows",
+ "description": "Our development workflow is as follows (for themes)All custom theme work happens in your _config directoryMake my-theme.js, pull everything together, either in this directory or in a wcfactory cat",
+ "metadata": {
+ "created": 1553349518,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-e6daa06e-dfd2-43a4-ade8-0c0ded24e0b4",
+ "indent": "2",
+ "location": "pages/documentation-1/haxcms/life-cycle/index.html",
+ "slug": "documentation-1/haxcms/life-cycle",
+ "order": "4",
+ "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "title": "Life cycle",
+ "description": "This is a general life cycle that happens when HAXcms \"boots up\". When web components are unpacking the contents of what to do it generally will work this way.page load, should it be no-js or a web c",
+ "metadata": {
+ "created": 1554496047,
+ "updated": 1617805490,
+ "readtime": 3,
+ "contentDetails": {
+ "headings": 3,
+ "paragraphs": 5,
+ "schema": [],
+ "tags": {
+ "p": 5,
+ "ul": 3,
+ "h2": 1,
+ "code-sample": 1,
+ "h3": 2
+ },
+ "elements": 12
+ }
+ }
+ },
+ {
+ "id": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "indent": "1",
+ "location": "pages/documentation-1/haxcms/index.html",
+ "slug": "documentation-1/haxcms",
+ "order": "4",
+ "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
+ "title": "HAXcms",
+ "description": "HAXcms, that which powers the site you are currently reading is a powerful \"static site generator\" paradigm. It leverages server technology in order to orchestrate a static site. That way the \"server\"",
+ "metadata": {
+ "created": 1550643005,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/HAXCms workflow.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/HAXCms workflow.jpg",
+ "url": "files/HAXCms workflow.jpg",
+ "type": "image/jpeg",
+ "name": "HAXCms workflow.jpg",
+ "size": 72736
+ }
+ ]
+ }
+ },
+ {
+ "id": "item-cdd303d0-4490-4433-94fa-0e78cf849e80",
+ "indent": "2",
+ "location": "pages/item-cdd303d0-4490-4433-94fa-0e78cf849e80/index.html",
+ "slug": "documentation-1/hax-development/internationalization-i18n",
+ "order": "4",
+ "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "title": "Internationalization - i18n",
+ "description": "We've created a way to internationalize ANY web component you create. Because this is a complex topic, and we seek to empower anyone, anywhere to work with web components; i18n is a critical piece of ",
+ "metadata": {
+ "created": 1617805490,
+ "updated": 1617806250,
+ "readtime": 2,
+ "contentDetails": {
+ "headings": 1,
+ "paragraphs": 3,
+ "schema": [],
+ "tags": {
+ "p": 3,
+ "a": 1,
+ "h3": 1,
+ "ul": 1,
+ "code-sample": 2
+ },
+ "elements": 8
+ }
+ }
+ },
+ {
+ "id": "item-52727dcf-a7d5-90e9-c459-a4a53dd07ffd",
+ "indent": "2",
+ "location": "pages/documentation-1/hax-development/hax-element-schema/index.html",
+ "slug": "documentation-1/hax-development/hax-element-schema",
+ "order": "5",
+ "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "title": "HAX Element Schema",
+ "description": "",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-5dede24a-2de7-4fae-a00b-31e8121e3c16",
+ "indent": "1",
+ "location": "pages/welcome/i-have-issues/index.html",
+ "slug": "welcome/i-have-issues",
+ "order": "5",
+ "parent": "item-welcome",
+ "title": "I have issues",
+ "description": "You have a problem or would like to contribute to anything in our universe? That's awesome! All issues, feature requests and general thumbs up should happen in our issue queue on github: https://gith",
+ "metadata": {
+ "created": 1553556295,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 1,
+ "schema": [
+ {
+ "resource": "#b54c9847-4d26-90ae-d748",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ }
+ ],
+ "tags": {
+ "p": 1,
+ "a11y-gif-player": 1
+ },
+ "elements": 2
+ }
+ }
+ },
+ {
+ "id": "item-677468f6-7bff-4bb6-bd2a-18520d88b3c4",
+ "indent": "1",
+ "location": "pages/integrations-1/classicpress-1/index.html",
+ "slug": "integrations-1/classicpress-1",
+ "order": "5",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "ClassicPress",
+ "description": "ClassicPress is a popular fork of WordPress that's even easier to get HAX up and running then it is in the original!Get the HAX plugin from the wordpress registryGo to edit / create a page/post ",
+ "metadata": {
+ "created": 1565279009,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 1,
+ "paragraphs": 2,
+ "schema": [
+ {
+ "resource": "#85219ed3-d806-24d7-5c02",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ }
+ ],
+ "tags": {
+ "p": 2,
+ "ol": 1,
+ "h2": 1,
+ "video-player": 1
+ },
+ "elements": 5
+ }
+ }
+ },
+ {
+ "id": "item-c7500902-9aed-4117-8949-a6597a02dada",
+ "indent": "2",
+ "location": "pages/documentation-1/haxcms/troubleshooting/index.html",
+ "slug": "documentation-1/haxcms/troubleshooting",
+ "order": "5",
+ "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "title": "Troubleshooting",
+ "description": "These are some common issues / resolutions in HAXcms related to installation, publishing, etc.I installed HAXcms and forgot my passwordYour username and password can be found in _config/config.php o",
+ "metadata": {
+ "created": 1553555764,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
+ "indent": "2",
+ "location": "pages/documentation-1/hax-development/hax-app-store/index.html",
+ "slug": "documentation-1/hax-development/hax-app-store",
+ "order": "6",
+ "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "title": "HAX app store",
+ "description": "",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-897a9839-4ca3-a336-4795-afca7b6de0ee",
+ "indent": "1",
+ "location": "pages/integrations-1/gravcms/index.html",
+ "slug": "integrations-1/gravcms",
+ "order": "6",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "GravCMS",
+ "description": "There's two plugins needed to run HAX on GravCMS - The web components and HAX plugins.Web components plugin - provides the build routine and installation instructionsHAX plugin - editor capab",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 2,
+ "schema": [
+ {
+ "resource": "#f0356db6-f345-316d-1426",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ }
+ ],
+ "tags": {
+ "p": 2,
+ "ul": 1,
+ "media-image": 1
+ },
+ "elements": 4
+ }
+ }
+ },
+ {
+ "id": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
+ "indent": "2",
+ "location": "pages/documentation-1/haxcms/theming/index.html",
+ "slug": "documentation-1/haxcms/theming",
+ "order": "6",
+ "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "title": "Theming",
+ "description": "There are multiple ways to \"theme\" in HAXcms that align with the skillsets of the person doing the theme development. Know web components? Cool. Know basic CSS and HTML? Cool. Want to build something ",
+ "metadata": {
+ "created": 1550643005,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-c5e61b84-e88a-5a48-29c6-5908117ec505",
+ "indent": "1",
+ "location": "pages/integrations-1/creating-new-ones/index.html",
+ "slug": "integrations-1/creating-new-ones",
+ "order": "7",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "Creating new ones!",
+ "description": "The main piece to our integrations is wrapped up in something we call \"The magic script\". The magic script is a standard way of dynamically discovering and importing the definitions of web components ",
+ "metadata": {
+ "created": 1548828434,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/59453a821222752c90fa970c937c2c396bff61f5-ngdle-university-faculty-side.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/59453a821222752c90fa970c937c2c396bff61f5-ngdle-university-faculty-side.jpg",
+ "url": "files/59453a821222752c90fa970c937c2c396bff61f5-ngdle-university-faculty-side.jpg",
+ "type": "image/jpeg",
+ "name": "59453a821222752c90fa970c937c2c396bff61f5-ngdle-university-faculty-side.jpg",
+ "size": 51809
+ }
+ ],
+ "readtime": 3,
+ "contentDetails": {
+ "headings": 3,
+ "paragraphs": 8,
+ "schema": [],
+ "tags": {
+ "p": 8,
+ "code-sample": 2,
+ "full-width-image": 1,
+ "h2": 3,
+ "ol": 1
+ },
+ "elements": 15
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/sitemap.xml b/github-pages-deploy-action-temp-deployment-folder/sitemap.xml
new file mode 100644
index 0000000..7c8b17b
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/sitemap.xml
@@ -0,0 +1,318 @@
+
+
+
+
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/hax-development
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//item-587de126-437b-4864-a3ea-54078837127c
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/haxcms/theming/core-elements/query-examples
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//welcome/what-is-hax
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/hax-development/wcfactory-tooling
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//welcome
+ 2022-08-25T18:26:55+00:00
+ daily
+ 1.0
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/hax-development/hax-app-store/apps
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/haxcms/theming/css-vars
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/haxcms/concepts
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/ux-concepts/add
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/core-concepts
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/hax-development/hello-world-element
+ 2021-04-07T14:44:23+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//welcome/why-haxcms-1
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/haxcms/installation
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/hax-development/hax-app-store/blox
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//get-involved-1
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//integrations-1
+ 2021-04-07T14:24:50+00:00
+ daily
+ 1.0
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/haxcms/theming/skin-a-site
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//item-eca7c8a4-393a-4e68-8cb4-440e94683738
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/haxcms/structure
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/hax-development/hax-schema
+ 2021-04-09T14:52:59+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//welcome/solutions
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/haxcms/theming/web-components
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//integrations-1/wordpress
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1
+ 2022-08-25T18:27:18+00:00
+ daily
+ 1.0
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/hax-development/hax-app-store/stax
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/ux-concepts/find
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/ux-concepts
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/related-technologies
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/hax-development/hax-app-store/autoloader
+ 2021-04-09T14:46:43+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//item-aa589faa-e860-4221-82fa-df6d57328ac2
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/haxcms/theming/core-elements
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//f-a-q-1
+ 2022-08-25T18:39:36+00:00
+ daily
+ 1.0
+
+
+ https://haxtheweb.org/https://haxtheweb.org//integrations-1/drupal
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//welcome/roadmap-1
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/haxcms/publishing
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//item-44cc230b-07db-442a-90cf-687e2d089a5d
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//welcome/presentations
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//integrations-1/backdropcms
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//scavenger-hunt-1
+ 2021-04-07T14:24:50+00:00
+ daily
+ 1.0
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/haxcms/theming/dev-workflows
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/haxcms/life-cycle
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/haxcms
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//item-cdd303d0-4490-4433-94fa-0e78cf849e80
+ 2021-04-07T14:37:30+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/hax-development/hax-element-schema
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//welcome/i-have-issues
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//integrations-1/classicpress-1
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/haxcms/troubleshooting
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/hax-development/hax-app-store
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//integrations-1/gravcms
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
+ https://haxtheweb.org/https://haxtheweb.org//documentation-1/haxcms/theming
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.7
+
+
+ https://haxtheweb.org/https://haxtheweb.org//integrations-1/creating-new-ones
+ 2021-04-07T14:24:50+00:00
+ daily
+ 0.5
+
+
diff --git a/github-pages-deploy-action-temp-deployment-folder/sitemap.xml.gz b/github-pages-deploy-action-temp-deployment-folder/sitemap.xml.gz
new file mode 100644
index 0000000..6b3e093
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/sitemap.xml.gz differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/theme/._.DS_Store b/github-pages-deploy-action-temp-deployment-folder/theme/._.DS_Store
new file mode 100644
index 0000000..9ad849c
Binary files /dev/null and b/github-pages-deploy-action-temp-deployment-folder/theme/._.DS_Store differ
diff --git a/github-pages-deploy-action-temp-deployment-folder/theme/theme.css b/github-pages-deploy-action-temp-deployment-folder/theme/theme.css
new file mode 100644
index 0000000..176ba5d
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/theme/theme.css
@@ -0,0 +1,13 @@
+/**
+ * This is a custom theme css file. You can write whatever you want here
+ * but realize you'll need to play by the rules of shadow dom. Meaning,
+ * that if something is in a shadow root you won't be able to style it.
+ *
+ * There is hope though. We leverage CSS variables heavily and most of the
+ * elements we have baked in do too.
+ *
+ * Also since our themes are built on Polymer, you can leverage what
+ * are called "apply blocks". The apply block loos like @apply --whatever-stuff;
+ * Think of it like a sass mixin, where you can apply any css you want
+ * inside of that block and it'll apply downstream. Two examples are given below
+ */
diff --git a/github-pages-deploy-action-temp-deployment-folder/theme/theme.html b/github-pages-deploy-action-temp-deployment-folder/theme/theme.html
new file mode 100644
index 0000000..2e510ab
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/theme/theme.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+
Edit this file by going to theme/theme.html
+
Edit the css by going to theme/theme.css
+
You can and should delete these messages and you can do anything
+ you want with this. This stuff is here to be destroyed and replaced.
+ Welcome to theming without javascript. Woot Woot.
+
+
ALso, you'll notice that if you write things like `[[`siteTitle`]]` and you'll get the site title.
+ You can see it in action here as [[siteTitle]].
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/github-pages-deploy-action-temp-deployment-folder/upgrade-browser.html b/github-pages-deploy-action-temp-deployment-folder/upgrade-browser.html
new file mode 100644
index 0000000..8a0e002
--- /dev/null
+++ b/github-pages-deploy-action-temp-deployment-folder/upgrade-browser.html
@@ -0,0 +1,136 @@
+
+
+
+
+ Modern browser required
+
+
+
+
+
+
Outdated browser detected
+
+
+ This website requires a modern browser to give the best experience possible.
+
+
+ Upgrade your browser to the latest version or download one of these browsers:
+
\ No newline at end of file
diff --git a/lunrSearchIndex.json b/lunrSearchIndex.json
index 12accf9..68572b5 100644
--- a/lunrSearchIndex.json
+++ b/lunrSearchIndex.json
@@ -1 +1 @@
-[{"id":"534ed4c72468366f5410adc169efc","title":"HAX development","created":1548826475,"location":"documentation-1\/hax-development","description":"Include HAX in your projectThe developers docs will lay out the many specifications that make HAX possible including core concepts, different schema's it leverages ad how to define app store spec in ","text":"include project developers specifications possible including concepts different schemas leverages define store order integrations further install lrnwebcomponents reference import template appstore definition paragraph editable thats behold power thousand source raining their editors complex ecosystem "},{"id":"587de126437b4864a3ea540788371","title":"HAX11ty","created":1597690877,"location":"item-587de126-437b-4864-a3ea-54078837127c","description":"HAX + 11ty = HAX11ty! HAX11ty gives you the best of SEO from 11ty while using the HAX editor and the HAXcms theme engine for presenting material. This gives you the SPA capabilities of fast loading r","text":"11ty hax11ty gives while using editor haxcms theme engine presenting material capabilities loading routes reload loads physical create repository github actions support built meaning check which updated update video shows early michael potter"},{"id":"36c4fc6067c043c28f71c6a117e8b","title":"Query examples","created":1553349518,"location":"documentation-1\/haxcms\/theming\/core-elements\/query-examples","description":" Hold up there. You didn't cover any of the query tags in that last section!Ok ok, here's the deal. Queries are so important that they needed their own section. Calm down Dwight we'll handle that n","text":"there didnt cover query section heres queries important needed their dwight handle elements incredibly powerful aspects haxcms theming deserve anyway example result conditions metadata funny spoken pages useful always element library structure effectively return anything anywhere matches criteria exact matching though getting children unless specifically requested great things parents level items which exactly conjunction repeat caveats doesnt render itself template polymer convention looking javascript order results visual output slice takes hierarchy chops dynamic methodology dynamicmethodology start parent fixed fixedid title child 2 4 levels delivered leveraging again leveling would allow create analyzes current active 3 below instance youve being returned block shows documentation attempts standardize practice wiring something requires supply going unfortunate limitation nature description location changed updated static based infrastructure changing dynamically during possible usage havent rolled themes could placing latest posts upcoming events thats passed unchanging loaded think simple views construct drupal worldview "},{"id":"asd7dab5820865e3c3e4267f233f6","title":"What is HAX","created":1548826475,"location":"welcome\/what-is-hax","description":"HAX - Headless Authoring eXperienceHAX is a WYSIWYG unlike any other. You extend your world by extending the web through the web component standard. HAX has a simple schema and integrations to allow","text":"headless authoring experience wysiwyg unlike other extend world extending through component standard simple schema integrations allow anyone author widget means developers fundamentally change operates while expressing highly semantic structure understand silly example maker mother shades image https media2 giphy media 3cb7aom6347pw components bottom platform style width 50 leverages capability express advanced functionality single order build itself ultimately dozens complex though shows interface cascades unpacks unique doesnt editing hasnt built above things general sense custom element object could theoretically directions these emitted capable elements editor critical implication extended modify about definitions limited develop creating rules content produced operate anywhere without after effectively organizing pages source either button screenshot below files uploaded place holder selected rendering adding caption panel insert writes properties takes piece converts backend output trace meaning definition longer require migrates between platforms access there integrated managing makes visual assets website "},{"id":"692eb91c400334295d9fcaac64691","title":"WCFactory Tooling","created":1548826475,"location":"documentation-1\/hax-development\/wcfactory-tooling","description":"","text":"tooling publish components library called wcfactory while required managing related elements factory churns agnostic unified development testing build production pipeline eliminate barriers component adoption because 23rd 89 18 traffic handle polyfills publishing global github"},{"id":"welcome","title":"Our Mission","created":1548826475,"location":"welcome","description":"We're on a mission to empower the next billion creators to share their voice with the world and in doing so, create a less toxic web. Regardless of ability,\u00a0platform,tribe\u00a0or income.Will you he","text":"mission empower billion creators share their voice world doing create toxic regardless ability platform tribe income haxtheweb society reading seeing believing thanks state college architecture sponsoring haxcms admin login developer quick start editor stand alone lrnwebcomponents integrate textarea older wysiwyg editors integrations 11ty wordpress classicpress drupal 7 8 9 backdropcms gravcms eadless uthoring perience generation block works anywhere components component based design assets never keeps without adding content produced semantic video player above involved slack channel things community people across platforms brainchild bryan ollendyke michael potter nikki massaro kaufman chorus contributors contributions arizona university plugin national archives audit libraries hax11ty eberly science contributor maintainers check additional details "},{"id":"96d00871d866c65eb7f04e242bde5","title":"apps","created":1548826475,"location":"documentation-1\/hax-development\/hax-app-store\/apps","description":"","text":"single definition example flickr integration haxtheweb below integrations pieces annotated order illustrate provides advanced complete about source details title display represent image collections optional present color accent author future yahoo description original photo sharing platform status available rating 0 grouping sources images creative commons crowdsourced connection object declares connect service protocol https additional headers added authorization bearer potentiallysomebigsignaturehere usually querying somebigkeyhere supported operations include browse delete method endpoint services pagination methodology style props photos perpage total pages needed search schema label supply input field textfield license select options 1 public domain 2 attribution 3 4 share alike requests 20 format nojsoncallback extras information coming across resultmap gizmo match results defaultgizmotype video location where items found response resource collection preview stuff whatever fields citation caption reading individual nodes editing inputs update adding uploading request "},{"id":"f0af8879a79c4d1cafc4e23c32f52","title":"CSS vars","created":1553349518,"location":"documentation-1\/haxcms\/theming\/css-vars","description":"CSS can be modified via CSS variables. CSS variables create a happy middle ground between the constraints of Shadow DOM (namely that styles are fully encapsulated) and designers wanting flexibility a","text":"modified variables create happy middle ground between constraints shadow namely styles fully encapsulated designers wanting flexibility control design leverage heavily template layer allow about theme already apply unlike normal polymer library build supports convention operate mixins write blocks variable which someone whatever valid attributes level several implemented below example haxcms basic forms clean baseline sites 37474f color ffffff indicator active accent arrow 8px children block button background height 250px border 2px solid black white padding 16px title display inline heading family montserrat helvetica tahoma geneva arial serif 32px margin bottom rendering optimizelegibility weight 600 "},{"id":"dfd62788ba484051a869986e59568","title":"Concepts","created":1550643005,"location":"documentation-1\/haxcms\/concepts","description":"HAXcms seeks to be a microsite generator and manager that doesn't require any command line in order to operate. HAXcms leverages HAX to give a best in class authoring experience while HAXcms seeks to","text":"haxcms seeks microsite generator manager doesnt require command order operate leverages class authoring experience while eliminate barriers publishing content online words phrases worth understanding haxeditor editor individual thats created outline sites schema manage theme single component based agnostic elements components design assets anywhere"},{"id":"e3dafe1a1f50183468f39f378e4dd","title":"Add Content","created":1548826475,"location":"documentation-1\/ux-concepts\/add","description":"Add Content\u00a0is how you create and add complex blocks to the HAX page editor. These blocks can be variable based on what you chose to include (see appstore) but ultimately are just adding web compon","text":"content create complex blocks editor these variable based chose include appstore ultimately adding components editable surface editing interface which writes properties attributes slots element "},{"id":"275a092860abb7cec2b6d0e358264","title":"Core concepts","created":1548826475,"location":"documentation-1\/core-concepts","description":"","text":"gizmo advanced piece media interactivity placed technical level component users content readers functionality helping complete maybe embed article wikipedia create gorgeous responsive video would without knowledge gizmos ensure consistent visual presentation authoring experience across myriad complex wired support remote capabilities search youtube leaving editing under while provide definitions talking commonly modified connect almost anything "},{"id":"39074718758fd51b1dc515cfbb79e","title":"hello-world element","created":1548826475,"location":"documentation-1\/hax-development\/hello-world-element","description":"Let's see what goes into the element called @lrnwebcomponents\/example-hax-element\u00a0in order to learn how we can wire anything up to HAXeditor.@lrnwebcomponents\/example-hax-element\/example-hax-elem","text":"element called lrnwebcomponents example order learn anything haxeditor import reference haxwiring behaviors connectedcallback cycle component specification appended exists establish wiring setup which ensure store ready canscale canposition caneditsource false gizmo title description provide apart working icons android color green groups handles usage author owner company settings quick configure property inputmethod textfield required available boolean advanced "},{"id":"650eaa59478c46748ef393e4b43e2","title":"HAXcms","created":1563972322,"location":"welcome\/why-haxcms-1","description":"HAXcms powers this website and is a hybrid static site generator, a new class of CMS. It's hybrid in that everything is written to static like a static site generator and it's 100% decoupled via web ","text":"haxcms powers website hybrid static generator class everything written 100 decoupled components features micro manager manage multiple sites single install powered files which version control every change executed front outline tools automatically tracked folder friend database lives operations write editing didnt ability serve pages publishing makes purely service worker whole offline installable capability 0 config build themes custom baked contextually loads based should weird thats trouble describing without tooling required sustainable building maintaining handle fields doesnt require infrastructure running beyond beaker browser organic living permanent hacking limitations content authoring capabilities principles support platforms devices empower authors looking produced haxeditor available older markup regardless structure learn rules producing elements dictate decentralize things peoples cross platform because adopted component standard development system management create compile about 98 4 traffic globally server rendering employs progressive enhancement methodology meaning browsing means latest greatest constantly worry library changing revolution evergreen browsers 93 polyfills 11 "},{"id":"5a6e664338344ac5ae70009026375","title":"Installation","created":1550643005,"location":"documentation-1\/haxcms\/installation","description":"Generic PHP install directionsHave PHP? well then you can setup HAXcms pretty quick. Just download HAXcms and navigate to its directory in a browser. It'll attempt to automatically install (which is ","text":"generic install directions setup haxcms pretty quick download navigate directory browser attempt automatically which create basic folders youll ascii telling password seeks 0 config installation anything didnt sense issue queues command haxing through prompts scripted arguments backend needs configuration files answer scripts haxtheweb youre having issues installing script ensure version 4 flavors start 3 allows users rapidly working webdev stack their machine heres steps using similar hosting latest github place htdocs either level copying shown image below placing folder where already installed things servers button click website started build organically docksal lando vagrant recommend docker container manager though based above basically downloading running going support methods often clone https elmsln terminal window magic username admin building static sites locally anywhere right apache gotchas existing server might configurations would cause matter local overrides allowed something following apache2 haxlocation options indexes followsymlinks allowoverride require granted "},{"id":"a91393ea31f830bd888f275a05e08","title":"blox","created":1548826475,"location":"documentation-1\/hax-development\/hax-app-store\/blox","description":"","text":"internal normal wysiwyg would layouts lists plate populate theres other generate layout ensure decent defaults produced schema below definition above details displaying visually title 33 66 columns author 4 8 status available piece which series element definitions array place holder properties 2 content 1 image "},{"id":"504d6323873d49e39de0ffa56c28f","title":"Get Involved!","created":1553197584,"location":"get-involved-1","description":"Join our communityJoin us on the\u00a0HAXTheWeb Slack\u00a0channelJoin us for\u00a0HAXcamp Un-code every Friday 3 pm - 5 pm (EST)Follow \/ use the #HAXTheWeb hash tagJoin our projectsHAXcms - That which ","text":"community haxtheweb slack channel haxcamp every friday 3 5 follow projects haxcms which powers website unbundled webcomponents methodology building deploying components monorepo editing experience other matter wcfactory build maintain component library should special check integrations platform specific repos organization wants involved great heres organizations project reach members happy conference calls forge partnerships especially around production solution though implications public reset hourly issue queue questions bring developers junkies explore details makes multiple across hundreds various overwhelming imagine something being developer contrib because takes thats right showing getting things powered people wanting better accessible easier painful develop place reality could snoop escorting brand anything possible limit yourself claims where "},{"id":"ac67dab5820865e3c3e4267b1bf60","title":"Integrations","created":1548826475,"location":"integrations-1","description":"HAX provides plenty of ways to integrate into the platforms you already use! Here are some of the plugins and integrations below this heading.Some things a liittle bit crazyCode Pen?!Demonstration","text":"provides plenty integrate platforms already plugins integrations below heading things liittle crazy demonstration autoloading component codepen bookmarklet allows injecting website details inject parts sites exploring ecosystem electron reaches maturity youll "},{"id":"3859b3ac1ef545b4909c3892f97a9","title":"Skin a site","created":1553354507,"location":"documentation-1\/haxcms\/theming\/skin-a-site","description":"Theme skinning is the easiest way to build a decent looking theme in HAXcms. This method is geared toward people that know CSS and HTML but can't get into the weeds of web components or javascript.Wo","text":"theme skinning easiest build decent looking haxcms method geared toward people weeds components javascript workflow select custom system sites mynewsite modify structure design liking minimal barrier entry those seeing files touch change requires tooling utilize either "},{"id":"eca7c8a4393a4e688cb4440e94683","title":"Block settings","created":1597689709,"location":"item-eca7c8a4-393a-4e68-8cb4-440e94683738","description":"Block settings will change contextually based on which block has been selected in the editable area of the page. In this screenshot, a paragraph has been selected and so the icon associated with it is","text":"block settings change contextually based which selected editable screenshot paragraph associated shown element other contextual tells should editing interface normal notice additional fields changed reflected instantly "},{"id":"44a138ea51224a2bb2ce8bf1fb11b","title":"Structure","created":1550643005,"location":"documentation-1\/haxcms\/structure","description":"By design we've got a very simple structure. The goal of HAXcms isn't to lock you into anything and so we've simplified our file structure over other solutions.The key directories \/ files include:fi","text":"design simple structure haxcms anything simplified other solutions directories files include youve uploaded through interface pages folders named their content index created hitting outline schema object defines relationship front stitch together service worker makes screen microsite"},{"id":"f1c8e3a4eddb806a8a3a206c1e33f","title":"HAX schema","created":1548826475,"location":"documentation-1\/hax-development\/hax-schema","description":"Implementing HAXSchemaIn order for your element to talk to the HAX editor, you need to implement static get haxProperties() on your element. This callback either returns a String based location of ","text":"implementing haxschema order element editor implement static haxproperties callback either returns string based location where lives directly appstore documentation describes integrate without defining example definition reference specification understanding standard expressing communicate component broken major groupings settings basic boolean scaled slider width canscale position center justified canposition source future caneditsource false after these booleans gizmo section internal calling custom represented interfaces reason everywhere would confusing should detailed below comments title display description provide apart working represent selection displays icons android color green grouping filtering groups handlers allow stitch together sources information gizmos render youtube supplies value points video picks things match 1 additional field presented presents player default implementations because which handles block property insert array objects multiple types reserved anything looking something matching present coming right pulls sticks caption fallback matches ability across though primarycolor metadata along author owner company wiring forms capable elements grouped three different areas quick segment schema provides singular properties select screenshot accentcolor accent inputmethod colorpicker format attribute theme enable invert colors configure shows moving manager hitting youll defaulted textfield required validationtype track closed captions thumbnailsrc thumbnail image optional poster mediatitle simple under label advanced configuration selects darktranscript transcript hidetimestamps timestamps stamps preload preloaded options media stickycorner sticky corner plays scrolled range choose disable bottom other audio mp3 mp4 tracks languages subtitles features thumbnails interactive annotation human readable english srclang letter language german spanish "},{"id":"29e7d7f5db3e3ef0733aed41d88f2","title":"Solutions","created":1548826475,"location":"welcome\/solutions","description":"Modularity is key to HAX success. Here are some of the solutions that HAX provides which leverage the HAXeditor interface.HAX editorHAX or HAXeditor is the editor of the future you're using in this ","text":"modularity success solutions provides which leverage haxeditor interface editor future youre using editing capabilities youve solution other projects based common integrations check works haxcms slimmest possible content management system thanks awesome power boils creation handful files behind scenes highly readable small loading single contains relationships between pages those stored manipulate simple server technology basically update making publishing baked github documentation section deeper website viewing powered controls bottom right would implementation demoing organization trying educations remote moment world where little controlled completely uniform manner actually pulls together universe media across helps bridge knowledge creators publishers eliminates involved anyway haxiam platform thats deploy multiple people abstraction enables users point deployment leverages hooks built allow integration enterprise login providers perfect organizations looking provide their micro still early "},{"id":"174499517504468ab3154388b85c0","title":"Web components","created":1553349518,"location":"documentation-1\/haxcms\/theming\/web-components","description":"Do you know full on web component development? Well, you can build a new theme from scratch. The best way to learn is by picking a part some of our examples. For this we'll analyze the haxcms-slide-th","text":"component development build theme scratch learn picking examples analyze haxcms slide import classes components polymerelement polymer element haxcmstheme lrnwebcomponents elements haxcmsthemewiring title print button active navigation indicator paper icons tooltip simple colors shared styles imports basic helpful themes first wiring library provides basis custom state management typically without having concepts class haxcmsslidetheme extends statement wraps thereby giving together about digging bridges store written design layer leverage anything writing convention referencing bound variable template heres variables youll commonly direct example would sitetitle ancestortitle parenttitle activetitle activeitemfields images 0 power under approach create field definitions haxschema extend capabilities pages required there small block doing following slotted content during display helps ensure clicks haxeditor opposed currently working sends backend which updates front changes ensures visible editing related appear somewhere leveraged whatever beyond correctly target integrated using position reposition dynamically covered write referenced provide prints different leveraging system discuss order cleaner "},{"id":"5a9ea17e63ce96f3e94fd5282b290","title":"WordPress","created":1549428503,"location":"integrations-1\/wordpress","description":"We support WordPress too! In order to use HAX though you'll want to replace the Gutenberg editor. The following steps will help you get it up and running.Get the Classic Editor. This plugin helps re","text":"support wordpress order though youll replace gutenberg editor following steps running classic plugin helps restore wanted unzip rename break platform specific assets content"},{"id":"db25d465f8ee6d9ba738f9e94305d","title":"Documentation","created":1548826475,"location":"documentation-1","description":"HAX may seem complex, but it's built on a series of standards that will never break. As a result of the complexity of these standards, there are things you should know prior to digging into HAXedito","text":"complex built series standards never break result complexity these there things should prior digging haxeditor related solutions watch build members development participate called uncode "},{"id":"faaa119810c7ff30ece601b30a9c0","title":"stax","created":1548826475,"location":"documentation-1\/hax-development\/hax-app-store\/stax","description":"Stax are what most WYSIWYG systems would call Templates. Stax in HAX are a series of HAX element schema's in succession.Below is a definition for the \"example lesson\" seen above. This is a larger ex","text":"wysiwyg systems would templates series element schemas succession below definition example lesson above larger probably items stack template layout except pieces group deleted shortcut generating details describes visually while subsequent property array title image author description status available rating 0 h2 properties content introduction learning network fundamentally different other technologies reading youve added really solid instruction video player style width 75 margin 0px display block source https youtube watch pklpq4ufo64 nocookie embed showinfo controls 1 iframed sandboxed false 560 height 315 responsive caption educational technology thats existed sustainable innovation secondarycolor fff9c4 textcolor 000000 secondarycolorclass yellow lighten 4 textcolorclass black ytnocookie ytsuggested ytcontrols yttitle vimeotitle vimeobyline vimeoportrait videocolor ff031d resource 86bfd28d 8b57 a3b9 b2e5 prefix oerschema schema terms xmlns creativecommons h3 pretest check 50 float right farm1 staticflickr 642 21641107852 3602f9c1a8 stickers associated shown presented laptop correct backgroundcolor b2dfdb backgroundcolorclass 08d09967 a7c9 3d02 8935 traditional management system considered generation digital environment nlearn about ngdle educause think already ahead something history review illustrate flexibility authoring platform multiple choice checklabel guess resetlabel clear hidetitle question founded answers label bryan ollendyke mythic elves michael potter nikki massaro kauffman charles lavera correcttext great incorrecttext again randomize typeof assessment 97ffed48 c928 39ae 1bea development responsible existing improves wants solution transform education world anyone community developed organizations displayedanswers trick theres 59426af4 ecf2 f49d 06a6 "},{"id":"251f207e4046a4b040ce7c28fe38a","title":"Search","created":1548826475,"location":"documentation-1\/ux-concepts\/find","description":"Search is a data interoperability layer to HAX where web components data binding shines. Search is able to stitch remote data together with local web components in order to streamline workflows. You ","text":"search interoperability layer where components binding shines stitch remote together local order streamline workflows source directly context click question building instantly "},{"id":"06233713d866335181da841d39311","title":"UX concepts","created":1548826475,"location":"documentation-1\/ux-concepts","description":"The HAX UI can be broken down into three major production concepts. Content authors are either:Adding something they already haveEditing the Settings of the activated element on the pageSearch for ","text":"broken three major production concepts content authors either adding something already editing settings activated element search media remote sources template predefined layout "},{"id":"0e4cc53c944f658a5440eacc5a1c0","title":"Related technologies","created":1548826475,"location":"documentation-1\/related-technologies","description":"","text":"there several technologies should learn about going understand built extend schema official website standard provides describing contained modify those values extensively called object related definition fully binded example https tutorialspoint draft 04 title product description acmes catalog properties unique identifier integer string price number minimum 0 exclusiveminimum required abstraction order provide forms updating wired elements wanted types input fields access learning would place start outline expressing storing relation between objects gives simple linking together concepts entities entity 1 indent location parent metadata enough visually represent information larger 3 items which express nested hierarchy consistent 123 d321d d2e dd2 author lrnwebcomponents series material teach structure content license glance potentially icons quilt 2 introduction outlines files 2nd break these higher whole created short explain valid additional details could relating needed universe works array contain pages leaves element within position inward something indented levels resource references display weighting relative other match level child container"},{"id":"a839d5c13321a395c0324ea8ea2cf","title":"autoloader","created":1548826475,"location":"documentation-1\/hax-development\/hax-app-store\/autoloader","description":"Autoloader is waaayyy easier to implement then the other parts of the appstore spec and is probably the most important as it loads all the elements that will be available to your users. All it is is a","text":"autoloader waaayyy easier implement other parts appstore probably important loads elements available users array object references should forcibly definitions bootstrapping heres basic example steps information definition finishes bootstrap ready loops through element following attempts dynamically import creates instance virtually looks static haxproperties exists valid haxschema leverage details there different declare schema simple three common forms explain maker lrnwebcomponents another location whatever vaadin upload canscale false canposition caneditsource gizmo title button color orange groups community author settings configure property label description inputmethod textfield saveoptions wipeslot method simply youll importing anything thats published built their basically enable future support defining capabilities could issue actually because possibly logistics application charge imported powerful verbose allows potentially someone elses defined define yourself means supply wiring based mental model performance benefit building design library including class "},{"id":"aa589faae860422182fadf6d57328","title":"Templates and Layouts","created":1597689709,"location":"item-aa589faa-e860-4221-82fa-df6d57328ac2","description":"Templates and layouts allow you to drop in pre-built pieces of content structure. This might be a series of images or an example of content that could be written.","text":"templates layouts allow built pieces content structure might series images example could written "},{"id":"a84c35ec85c84c7cb4ab80c2fbc87","title":"Core elements","created":1552437937,"location":"documentation-1\/haxcms\/theming\/core-elements","description":"While you're not required to use them, HAXcms supplies a series of elements that can make theme development effortless. You can see the source of these in greater detail under the theme directory of h","text":"while youre required haxcms supplies series elements theme development effortless source these greater detail under directory brief overview provide interface seeks apply pattern technique sentence dramatic effect everyone knows about heading stands semantic drink sweats thats right allows complex state managed system without needing understand management important awesome people twitter designers design intricacies making collapsed field expand relative dictated active store intentionally confusing worded something themes directly implement layer simple blogs footer element great example heres module imports dependencies lrnwebcomponents latest import components title blocks children block outline layout modal navigation breadcrumb indicator button query slice render print pretty explanatory because wrapped h1 child items based criteria match basic license details house other trail links buttons navigating through previous parent first kinds options visualization hierarchy complete checkmarks given optional styling highlighted scrolls small screens fantastic level focus support 4 levels printing displays opened window 2 0 1 format applies correct values discover homepage themselves examples check leverage heavily across style variables inside custom available learn implementing multiple against always reread section "},{"id":"49d727fbb5c8871a3979a51431169","title":"F.A.Q.","created":1548826475,"location":"f-a-q-1","description":"Are web components ready for prime time?Yes. Web components effectively\u00a0turn the HTML of a site into a consistent API. HAXeditor leverages this approach and standardizes its usage in order to suppl","text":"components ready prime effectively consistent haxeditor leverages approach standardizes usage order supply incredible amount functionality browser majority provide prior interfacing server files understand modify content whats support compiled ie11 major browsers natively supported 11 though mostly evergreen haxcms broad fragmented optimize experience device lowest highest quality numbers based global traffic aggregate updated 2020 safari 9 1 older frame 8 es5 fallback 18 below watered 7 chromium bottom firefox 48 67 10 modern 96 5 native es6 elements supplies written appstore specification defining available other demos leveraging autoloader piece which component definitions schema separate desired useful editorial workflows permissions scenarios these require operate modifies inside itself exports means longer required render writing could semantic ensure lives platform being scope element unpack correctly otherwise compare wordpress gutenberg plugin terms mission attempt click build website tonight minimal solution masses reduce barriers entry expression takes critical differences philosophy design technical implementation goals seeks improve publishing systems constructed fraction empower anyone privacy sovereignty individuality peoples eliminate production integration delivery material internet expensive hence domain larger points different highlighted independent touches agnostic highly focused needs improving authoring users embeds blocks layer nuance operations wildly block example tabbed items another button inline believes editing across complex delivered level illustrates selecting would adoption training through cognitive increase things primary construction method upload media thats separately integrated process dependent deliver boils creation mental model author authors either something create layout remix template system produces react specific logistics produced capable believe extending broader capabilities first second duplication efforts globally improves resource sharing requiring plugins vanillajs litelement polymerelement compatible library produce while limited popular examples following skatejs svelte vuejs wrapper angular custom passes testing everywhere should where brain child pennsylvania state university originally created power instructional innovations quickly realized potential transform original development evangelist infancy conceived 2016 experimented 2017 manifested 2018 actualized 2019 bryan ollendyke btopro project developer michael potter nikki massaro kauffman nikkimk charles lavera cgldevel collins assessment katrina katrinamwehr melissa hicks juststormy champion there nothing together better plures"},{"id":"ca8c6ba8c0128ace343a3701f2060","title":"Drupal","created":1548826475,"location":"integrations-1\/drupal","description":"Try on SimplyTest.meTry HAX on Simplytest me in a few steps without needing to install anythingGo to Simplytest me and pick HAX modulePick 9.x,8.x or 7.xLog in, go to Administration -> Configurat","text":"simplytest steps without needing install anything module 9 8 7 administration configuration content authoring input formats filters filter disabled things garland getting setup drupal works 6 mostly prove point while routines largely follow directions flavor branching easiest require additional modules going project aware version components download platform found readme these files copythisstuff folder enable should block editor enjoy haxing special order upload capabilities youll entity restws created common feature using features which dependencies sites "},{"id":"01e0f49a190a4c8dae0e83d62675e","title":"Roadmap","created":1565290387,"location":"welcome\/roadmap-1","description":"HAX encompasses many different projectsThis roadmap illustrates all the projects related to HAX and ELMS:LN, which HAX comes from. The little settings gears found throughout illustrate enhancements a","text":"encompasses different projects roadmap illustrates related which comes little settings gears found throughout illustrate enhancements steps wheel house theres planned haxeditor haxcms additional future capabilities result these important understand relationships through innovations between major pieces parts detailed relationship before getting organization included details haxiam three space benefit being built components server technology while front assets fully requires backend pages below image consolidating information arrows illustrating innovation always building blocks usually bubbling either there influences improves inside improvements platforms makes copies generated foundation project roadmaps "},{"id":"5df45272f6b94f4fb65016c47aeac","title":"Publishing","created":1550643005,"location":"documentation-1\/haxcms\/publishing","description":"HAXcms requires being published in order to be visible to other people. Working locally or on Desktop or on a server, is akin to you writing a document on your computer. It's not shared with anyone. W","text":"haxcms requires being published order visible other people working locally desktop server writing document computer shared anyone recommend setup publishing ahead hassle later setting listing click settings right corner youll modal options plugging github credentials password aspect optional enter behalf container which allows future requests publish happen automatically stored manually files after using heading npublishing sites share update website hitting button inside bottom started currently provider supported local installation method providers additional development flexibility understanding whats actually happening things ready general those operations takes underlying commits version control though already should pushes these origin repository likely switches branch pages deviate needed deletes symlinks replaces correct references leverages specified super charge users through correctly rewrite index match paths where going sends clean master everything indicated successful meaning pushed there depending content minutes change usually within about 2 passed refresh address youve previously probably theme 5 seconds message indicating available clicking refreshing browser updated happens because called service worker enables 100 offline capable ensures traffic absolutely necessary workflows might between thats terminal following yoursite checkout branches valid distribution wasnt their destination "},{"id":"44cc230b07db442a90cf687e2d089","title":"haxHooks","created":1617802345,"location":"item-44cc230b-07db-442a-90cf-687e2d089a5d","description":"Elements can integrate deeply into HAX state management using what we call \"hax hooks\". By supplying a method on your web component like haxHooks()\u00a0you are magically able to tap into different li","text":"elements integrate deeply state management using hooks supplying method component haxhooks magically different cycle steps within editor because simplicity power exhaustive internal documentation should consulted issue ensure document missing search lrnwebcomponents monorepo usage order discover additional implementations beyond pointed below posts about topic supply their editing experience webcomponents example basic which strings implement async callbacks await allows safely defer element whatever wants structure callback without disrupting activation conversion schema virtualize sanitation purposes adding things return activeelementchanged haxactiveelementchanged editmodechanged haxeditmodechanged inlinecontextmenu haxinlinecontextmenu gizmoregistration haxgizmoregistration preprocessnodetocontent haxpreprocessnodetocontent postprocessnodetocontent haxpostprocessnodetocontent progressiveenhancement haxprogressiveenhancement preprocessinsertcontent haxpreprocessinsertcontent store powerful fires whenever appstore definition loaded supplies instance haxstore written object while seemingly examples leverage super sample inject shortcut logic supplied convert based hijacks baked support instead default wikipedia query github preview custom public endpoints being media including these autoloader block translatable haxproperties maker twitter embed translations means spanish would fields inputs opposed english static value activates selects modify active inactive false functional aspects prior receiving could preventing behavior clickable ebook button another possible making pieces shadowroot contenteditable activated nodes itself changes longer cemenu after allow buttons operations context hovers above access multiple choice quick removing potential answers quickly right before converted content entire happens triggered event converting saved returned backend known clean taking complex property innerhtml children progressive enhancement string appended alternative accomplish during response useful forcible regexing output specific words video player ensuring there empty arrays required field detail virtual inserted modification thats answer doesnt bleed through duplication inserting selecting "},{"id":"c86470aa02954c9d9f1748ad79ab0","title":"Presentations","created":1552910817,"location":"welcome\/presentations","description":"This is the youtube playlist of all things HAXTheWebThis playlist is updated on a regular basis so make sure to subscribe to the youtube channel for updates. There's also many other playlists relat","text":"youtube playlist things haxtheweb updated regular basis subscribe channel updates theres other playlists related wcfactory haxcms components general "},{"id":"4824986b1897568dfdd94b882ea6e","title":"BackdropCMS","created":1548826475,"location":"integrations-1\/backdropcms","description":"Getting HAX setup in BackdropCMSSearch for HAX on BackdropCMS.org\u00a0or from within your Backdrop siteFollow the instructions in the Web components module README\u00a0for buildingDon't worry, HAX requ","text":"getting setup backdropcms search within backdrop follow instructions components module readme building worry requires comes files supply details install enable modules should enjoy haxing "},{"id":"7ab2e2fd622f4a0f9967599410c6c","title":"Scavenger Hunt","created":1563970537,"location":"scavenger-hunt-1","description":"Become part of our dynasty franchise **by wearing a cool jerseyWe're building the greatest roster of people ever to HAX the complacency of our industry. Take the HAX scavenger hunt at the next ev","text":"become dynasty franchise wearing jersey building greatest roster people complacency industry scavenger event movement winners rocking their merch completing onelittlebecca drupalgovcon 19 jproffitt natefollmer"},{"id":"7f3dd6904c3f4616baa5159b9a158","title":"Dev workflows","created":1553349518,"location":"documentation-1\/haxcms\/theming\/dev-workflows","description":"Our development workflow is as follows (for themes)All custom theme work happens in your _config directoryMake my-theme.js, pull everything together, either in this directory or in a wcfactory cat","text":"development workflow follows themes custom theme happens config directory everything together either wcfactory catalog elements youve reference element update block include something haxtheme myorganization eberly tells haxcms select valid local during polymer serve components locally while recommended sites mynewsite entrypoint adjust opens address after youll which leveraging assets referenced modules project install would other manually point location actively working develop until liking shipping build routine important currently forks original source because recompile youre trying around involving rollup delete symlink replace publish leverage future admittedly component rough maintain built modular system without tooling having workflows directly allow streamline creation current limitations existing webcomponents whatever there pegged projects creating creates effect ensure place order power "},{"id":"e6daa06edfd243a4ade80c0ded24e","title":"Life cycle","created":1554496047,"location":"documentation-1\/haxcms\/life-cycle","description":"This is a general life cycle that happens when HAXcms \"boots up\". When web components are unpacking the contents of what to do it generally will work this way.page load, should it be no-js or a web c","text":"general cycle happens haxcms boots components unpacking contents generally should component delivered preflight builder loads reads outline schema starts bootstrap theme items title appends editor which checks context established based global values nodejs beaker login point check theres users local finds backend injects bridge haxeditor injected correct place unpacks thing event driven architecture allows jumping different operational steps reacting these changes design pattern means fires javascript written react operation example haxiam implements custom configuration listeners included class question include replace iamconfig haxcmsconfig system listener getjwtuser addeventlistener array later additionally callback public function token enterprise uservar ensures there object instance above correctly associate influence constructed config after bootstraps initial metadata constructing block document connection settings authorized points connecting modifying logic where flows integrations following hooks allow supplanting intentionally simplistic organization specific examples didnt built useful other methods access validate except every transaction ensure matches decoding supply manually methodology refresh deemed needing supplies looks "},{"id":"4bce35464d5344568eae494c79180","title":"HAXcms","created":1550643005,"location":"documentation-1\/haxcms","description":"HAXcms, that which powers the site you are currently reading is a powerful \"static site generator\" paradigm. It leverages server technology in order to orchestrate a static site. That way the \"server\"","text":"haxcms which powers currently reading powerful static generator paradigm leverages server technology order orchestrate needed securely develop their content difference generators unlike solutions jekyll anyone publish website those understand command intended installed allow users entirely create manage micro sites visualization"},{"id":"cdd303d04490443394fa0e78cf849","title":"Internationalization - i18n","created":1617805490,"location":"item-cdd303d0-4490-4433-94fa-0e78cf849e80","description":"We've created a way to internationalize ANY web component you create. Because this is a complex topic, and we seek to empower anyone, anywhere to work with web components; i18n is a critical piece of ","text":"created internationalize component create because complex topic empower anyone anywhere components i18n critical piece accessibility improving knowledge access doing without requiring framework driven approach knowing element production complicated series decisions details these i18nmixin install mixin lrnwebcomponents manager folder called locales spanish translation japanese would example import class myelement extends htmlelement constructor stuff registerlocalization context basepath connectedcallback render innerhtml invokes dependency which might similar dependencies custom event youll still convention translatable heres invoke needed window dispatchevent customevent register detail namespace haxproperties localespath decodeuricomponent using vanilla directory naming simplifies integration timing initiated registration method within thats going arrive haxcms property "},{"id":"52727dcfa7d590e9c459a4a53dd07","title":"HAX Element Schema","created":1548826475,"location":"documentation-1\/hax-development\/hax-element-schema","description":"","text":"example element schema object pretty simple abstraction elements helps packaging sanitization h2 properties content introduction learning network fundamentally different other technologies reading youve added really solid instruction video player component style width 75 margin 0px display block source https youtube watch pklpq4ufo64 nocookie embed showinfo 0 controls 1 iframed sandboxed false 560 height 315 responsive caption educational technology thats existed sustainable innovation secondarycolor fff9c4 textcolor 000000 secondarycolorclass yellow lighten 4 textcolorclass black ytnocookie ytsuggested ytcontrols yttitle vimeotitle vimeobyline vimeoportrait videocolor ff031d resource 86bfd28d 8b57 a3b9 b2e5 prefix oerschema terms xmlns creativecommons "},{"id":"5dede24a2de74faea00b31e8121e3","title":"I have issues","created":1553556295,"location":"welcome\/i-have-issues","description":"You have a problem or would like to contribute to anything in our universe? That's awesome! All issues, feature requests and general thumbs up should happen in our issue queue on github:\u00a0https:\/\/gith","text":"problem would contribute anything universe thats awesome issues feature requests general thumbs should happen issue queue github https elmsln"},{"id":"677468f67bff4bb6bd2a18520d88b","title":"ClassicPress","created":1565279009,"location":"integrations-1\/classicpress-1","description":"ClassicPress is a popular fork of WordPress that's even easier to get HAX up and running then it is in the original!Get the HAX plugin\u00a0from the wordpress registryGo to edit \/ create a page\/post ","text":"classicpress popular wordpress thats easier running original plugin registry create haxing installation video shows installing manually store "},{"id":"c75009029aed41178949a6597a02d","title":"Troubleshooting","created":1553555764,"location":"documentation-1\/haxcms\/troubleshooting","description":"These are some common issues \/ resolutions in HAXcms related to installation, publishing, etc.I installed HAXcms and forgot my passwordYour username and password can be found in _config\/config.php o","text":"these common issues resolutions haxcms related installation publishing installed forgot password username found config server assuming local development clicked login nothing happened locked clear browser cache cookie might invalid again publish minute times since creating commit rewriting files front waiting github before triggers successful response setup click dashboard listing ensure youve integration correctly realize everything outline schema theres issue something check sites mysite settings variables cascade stored globally replicated locally allow pealed easily imported exported other setups "},{"id":"4de60a5f98aba602edfc0cf024e83","title":"HAX app store","created":1548826475,"location":"documentation-1\/hax-development\/hax-app-store","description":"","text":"store specification provides integration capabilities block tells haxeditor rules which complete example available outline different parts supports detail source either upload search supply definition connect remote things elements series wrapped inside plate element modified pieces fundamentally entire thing piece moved group stack added think these autoloader automatically loaded setup "},{"id":"897a98394ca3a3364795afca7b6de","title":"GravCMS","created":1548826475,"location":"integrations-1\/gravcms","description":"There's two plugins needed to run HAX on GravCMS - The web components and HAX plugins.Web components plugin\u00a0- provides the build routine and installation instructionsHAX plugin\u00a0- editor capab","text":"theres plugins needed gravcms components plugin provides build routine installation instructions editor capabilities enable these beware there conflicts between markdown parsing disable parser pages "},{"id":"a52fb6850a2f4bc08e62457cf01d6","title":"Theming","created":1550643005,"location":"documentation-1\/haxcms\/theming","description":"There are multiple ways to \"theme\" in HAXcms that align with the skillsets of the person doing the theme development. Know web components? Cool. Know basic CSS and HTML? Cool. Want to build something ","text":"there multiple theme haxcms align skillsets person doing development components basic build something complete ground robust templating engine unleash creativity written wcfactory tooling order improve management component libraries scale lrnwebcomponents element portfolio required fancy yourself modern front developer might watch video these dives layer great seeing whats possible about making themes store state works internally always designers heres source learn which viewing currently initial example looks copyright 2019 pennsylvania university license apache 2 0 import polymerelement polymer haxcmstheme elements haxcmsthemewiring navigation breadcrumb active title button print simple colors layout drawer paper learn2 microcopy language worth noting customelement index class learntwotheme extends render function static template return style display block family helvetica tahoma geneva arial serif letter spacing 03rem weight 400 background fafafa h1 h2 h3 h4 h5 h6 montserrat rendering optimizelegibility height 150 hidden contentcontainer padding 48px 96px header 747474 color center 0rem 1rem 2rem heading 52px 3px 78px margin bottom 27 2px 13 6px 100 position relative overflow inline decoration 28px 383f45 ffffff scroll 100vh 200px container 2d3237 webkit scrollbar track shadow inset 4px 56 63 69 9 border radius width thumb 1px available 300px scrim 80 8 content buttons justify space evenly white black narrow 16px menubutton menubutton2 absolute 1 fixed 64px transition 4s delay 2s opacity disabled hover focus 160px unset transparent important right opened properties custom binding easier obtain directly notice operate correctly status props super boolean reflecttoattribute toggledrawer toggle window customelements define export "},{"id":"c5e61b84e88a5a4829c65908117ec","title":"Creating new ones!","created":1548828434,"location":"integrations-1\/creating-new-ones","description":"The main piece to our integrations is wrapped up in something we call \"The magic script\". The magic script is a standard way of dynamically discovering and importing the definitions of web components ","text":"piece integrations wrapped something magic script standard dynamically discovering importing definitions components leverage approach platform because simplifies initial question teach about theres entire series integration methodology detail works stand alone custom builds found unbundled below recommended array elements already include window appcdn https webcomponents state automatically hydrate discovered including family things every support examples angular other frameworks folder common example wordpress plugin function document ready press haxthepress createelement wysiwyg template target tinymce const content queryselector textarea replicate providing light fieldclass editor fieldname fieldid opendefault elementalign savebuttonselector input submit publish haxthepressconnector appstoreconnection previously innerhtml value append appendchild clonenode insert field exactly where parentnode insertbefore removechild jquery integrate using correctly loaded replacing capable general advisement haxeditor keeps functionality front really little tying anything result systems currently capabilities effectively point appstore specification upload files optional filtering valid system accept saved database doing sanitation prior storage process should strips youll white listing order ensure component through "}]
\ No newline at end of file
+[{"id":"item534ed4c7-2468-366f-5410-a","title":"HAX development","created":1548826475,"location":"documentation-1/hax-development","description":"Include HAX in your projectThe developers docs will lay out the many specifications that make HAX possible including core concepts, different schema's it leverages ad how to define app store spec in ","text":"hax development quick start if you want to work on individual components inside need link the node_modules folders.\n \n cd haxcms/\n # directory your clone of lrnwebcomponents ln -s ../lrnwebcomponents/node_modules/\n \n\nif see element changes in a haxcms site we setup some sym links directory.\n sites/my-site/\n dist, build, and node_modules\n ../../dist/\n ../../build/\n ../../node_modules/\n \n\n\ninclude project\nthe developers docs will lay out many specifications that make possible including core concepts, different schemas it leverages ad how define app store spec order take integrations further.\n get code\nnpm install --save @lrnwebcomponents/h-a-x\nyarn add @lrnwebcomponents/h-a-x\n\n# reference project\nimport \"@lrnwebcomponents/h-a-x/h-a-x.js\";\n\n# use template with an appstore definition like\n< h-a-x >\n now this paragraph is editable\n \n< / >\n\nuhh, it?\nyeah, that's it. behold power thousand open source suns raining down all their hate editors past complex or ecosystem lock in."},{"id":"item587de126-437b-4864-a3ea-5","title":"HAX11ty","created":1597690877,"location":"item-587de126-437b-4864-a3ea-54078837127c","description":"HAX + 11ty = HAX11ty! HAX11ty gives you the best of SEO from 11ty while using the HAX editor and the HAXcms theme engine for presenting material. This gives you the SPA capabilities of fast loading r","text":"hax + 11ty = hax11ty ! gives you the best of seo from while using editor and haxcms theme engine for presenting material. this spa capabilities fast loading routes in but reload page it loads a physical file high ala 11ty!\ncreate new repository hax11ty\n\nit even has github actions support built in! meaning can check out mini-doc site hax11ty\n which is self-updated when we update docs / repo hax11ty.\nthis video shows\n early work on by michael potter"},{"id":"item36c4fc60-67c0-43c2-8f71-c","title":"Query examples","created":1553349518,"location":"documentation-1/haxcms/theming/core-elements/query-examples","description":" Hold up there. You didn't cover any of the query tags in that last section!Ok ok, here's the deal. Queries are so important that they needed their own section. Calm down Dwight we'll handle that n","text":"hold up there. you didnt cover any of the query tags in that last section! \nok ok, here's deal. queries are so important they needed their own section. calm down dwight we'll handle now. the site-\n\n\n\n elements incredibly powerful aspects haxcms theming deserve section anyway.\nsite-query\n\n\ncode example\n < site-query\nresult=\"{{result}}\"\nconditions='{\"metadata.tag\": \"funny\"}'\n>\n< /site-query>\n\n\n \n\n\nspoken example\n\"give me all the \n give pages who have a tag \"funny\"\n\nwhen it's useful\nalways. this is by far most element our library. it can site structure and effectively return anything, anywhere matches criteria. for exact criteria matching though won't be getting children page x unless specifically requested them.\nthis great things like don't parents (top level items) which exactly how site-top-menu\n\n does conjunction with dom-repeat (in example).\ncaveats\nthis doesn't render anything itself\n\n\nyou to then know do two way template bind (polymer convention looking {{result}} \n\nor use javascript order results visual output\n\nits powerful\n\n\nsite-query-menu-slice\n\n\na menu slice one takes part hierarchy chops out items.\n <\n site-query-menu-slice\n result=\"{{__items}}\"\n dynamic-methodology=\"[[dynamicmethodology]]\"\n start=\"[[start]]\"\n end=\"[[end]]\"\n parent=\"[[parent]]\"\n fixed-id=\"[[fixedid]]\"\n >\n /site-query-menu-slice>\n \n [[item.title]]\n \n\nspoken child pages\nthat 2 4 levels deep.\n\ndelivered results\n what type leveraging again?\n site-query-menu-slice\n\ndynamic leveling\nthe dynamic leveling flag would allow create analyzes current active item (as example). say \"always 2-3 below this\". instance you've got sub-set being returned.\nwhen useful\nthis useful block always shows documentation site.\nsite-render-query\n\n\na attempts standardize practice wiring site-query something visual. requires supply get going has unfortunate limitation must not nature.\nexample\n description: [[item.description]]\n location: [[item.location]]\n changed: [[item.metadata.updated]]\n set as active\n \n\n\n\nwhen useful\nwhen static items want once based on infrastructure yet changing dynamically during view.\npossible usage\nas we haven't rolled into themes at time, could placing \"latest posts\" or \"upcoming events\" block. that's data passed but unchanging loaded. think simple \"views\" construct if from drupal worldview."},{"id":"itemasd7dab5-8208-65e3-c3e4-2","title":"What is HAX","created":1548826475,"location":"welcome/what-is-hax","description":"HAX - Headless Authoring eXperienceHAX is a WYSIWYG unlike any other. You extend your world by extending the web through the web component standard. HAX has a simple schema and integrations to allow","text":"hax - headless authoring experience\nhax is a wysiwyg unlike any other. you extend your world by extending the web through component standard. has simple schema and integrations to allow anyone author that \"widget\" on site.\nthis means developers can fundamentally change way html operates while expressing it in highly semantic tag structure.\nlets understand silly example\n \n \n<meme-maker\n alt=\"mother of god shades gif\"\n image-url=\"https://media2.giphy.com/media/3cb7aom6347pw/giphy.gif\"\n top-text=\"web components\"\n bottom-text=\"it's \"the\" platform\"\n style=\"width: 50%;\">\n</meme-maker>\n\n components\n it's platform\nhow leverages this\nhax this capability express advanced functionality single order build itself. ultimately, made up dozens complex new tags. end though. shows interface like \n. cascades unpacks unique experience.\nhax also doesn't what editing though! hasn't been built say, meme-maker above. edit things\n in very general sense. if custom element / dom object, could theoretically it... knew directions. these directions are emitted from capable elements when editor sets itself up. critical implication this: \nhax be extended how modify just about element!\nthese definitions limited develop more or less creating rules experience\nthe content produced operate anywhere with without after fact\n\n\nwait, say that\nhax effectively organizing page could. let's look at an example page's source. either hit then \"source view\" button see screenshot below\nso was files/lego.jpg\n file uploaded (drag drop place holder area) we selected \"full width\" image type for rendering. then, adding caption panel, insert writes properties into adds editing. save, takes piece converts send backend.\nthe output no trace hax, meaning load definition full-width-image tag, longer require hax. migrates between platforms have access it'll know pick fact (as long as there). \nin way, gets integrated other managing \"body\" blob area makes page. visual assets work used website."},{"id":"item692eb91c-4003-3429-5d9f-c","title":"WCFactory Tooling","created":1548826475,"location":"documentation-1/hax-development/wcfactory-tooling","description":"","text":"we made tooling to publish web components with ease and in any library. its called wcfactory while not required, it's the use for managing hax many related elements our convenience installation script\n\n \n curl -fssl https://raw.githubusercontent.com/elmsln/wcfactory/master/wcfactoryme.sh -o wcfactoryme.sh && sh wcfactoryme.sh\n \n\na factory that churns out components, library agnostic a unified development, testing, build production pipeline. want eliminate barriers component adoption because as of oct 23rd, 89.18% all traffic can handle no polyfills. get it on npm\n or yarn\n publishing!\n $ yarn global add @wcfactory/cli\n\n\nwcfactory github"},{"id":"itemwelcome","title":"Our Mission","created":1548826475,"location":"welcome","description":"We're on a mission to empower the next billion creators to share their voice with the world and in doing so, create a less toxic web. Regardless offfff ability, platform,tribe or income","text":"were on a mission to empower the next billion creators share their voice with world and in doing so, create less toxic web. regardless offfff ability,\n platform,\ntribe\n or income\n.\nwill you help us #haxtheweb\n hax society?\n \n \n# editor stand alone for use apps\nnpm install --save @lrnwebcomponents/h-a-x\nyarn add @lrnwebcomponents/h-a-x\npnpm @lrnwebcomponents/h-a-x\n# or integrate textarea like older wysiwyg editors\nnpm @lrnwebcomponents/wysiwyg-hax\nyarn @lrnwebcomponents/wysiwyg-hax\npnpm @lrnwebcomponents/wysiwyg-hax\nintegrations\n\nnpm\n\nhax + 11ty\nwordpress\n\n / classicpress\n\ndrupal 7,8 9\n\nbackdropcms\n\ngravcms\n\nhaxcms\n\n\n\n \n\nhax works web component based design assets so are never tied hax. this keeps your pure \nand without adding platform lock-in as content produced by is semantic html. want video player above this? then just run this:\n# video-player tag but anywhere of it\nyarn @lrnwebcomponents/video-player\nget involved!\njoin our slack channel\n get involved all things components. an open community people who love across platforms.\nwho's involved\nhax brainchild bryan ollendyke, michael potter, nikki massaro kaufman, charles lavera chorus contributors. we've had contributions from:\narizona state university (drupal 8 plugin)\nthe national archives (ux audit, drupal plugin)\npenn libraries (hax11ty)\npenn eberly college science (core contributor maintainers)\npenn arts architecture contributors maintainers)\n\ncheck out involved\n page additional details."},{"id":"item96d00871-d866-c65e-b7f0-4","title":"apps","created":1548826475,"location":"documentation-1/hax-development/hax-app-store/apps","description":"","text":"a single app definition this is an example of how the flickr\n\n\n\n integration set up in haxtheweb.org. below integrations pieces have been annotated i order to illustrate what each provides hax. for more advanced see complete example\n\n\n\n\n.\n {\n// info about source integration\n\"details\": {\n // title display ui\n \"title\": \"flickr\",\n icon represent it uis\n \"icon\": \"image:collections\",\n optional image present it\n \"image\": \"flickr.jpg\",\n color accent \"color\": \"pink\",\n author (future)\n \"author\": \"yahoo\",\n description \"description\": \"the original photo sharing platform on web.\",\n status \"status\": \"available\",\n rating \"rating\": \"0\",\n tags grouping sources \"tags\": [\"images\", \"creative commons\", \"crowdsourced\"]\n},\n// connection object declares connect service\n\"connection\": \"protocol\": \"https\",\n \"url\": \"api.flickr.com\",\n any additional headers that need added\n \"headers\": \"authorization\": \"bearer potentiallysomebigsignaturehere\"\n },\n data send with api call, usually authorization or querying\n \"data\": \"api_key\": \"somebigkeyhere\"\n supported operations include, browse, read, edit, add, delete\n \"operations\": \"browse\": \"method\": \"get\",\n \"endpoint\": \"services/rest\",\n pagination methodology \"pagination\": \"style\": \"page\",\n \"props\": \"per_page\": \"photos.perpage\",\n \"total_pages\": \"photos.pages\",\n \"page\": \"photos.page\"\n }\n needed search this\n \"search\": json schema key with, label supply and input field type\n \"text\": \"search\",\n \"type\": \"textfield\"\n \"license\": \"license type\",\n \"select\",\n \"options\": \"1\": \"public domain\",\n \"2\": \"cc attribution\",\n \"3\": zero\",\n \"4\": share-alike\"\n requests\n \"flickr.photos.search\",\n \"\",\n \"safe_search\": \"1\",\n \"20\",\n \"format\": \"json\",\n \"nojsoncallback\": \"extras\": \"license,description,url_l,url_s\"\n map information coming across wire\n \"resultmap\": type gizmo match results to\n \"defaultgizmotype\": \"video\",\n location where items are found response\n \"items\": \"resource.items.collection\",\n preview\n \"preview\": \"stuff\",\n \"details\": \"details\",\n \"whatever.jpg\",\n \"id\": \"meta.id\"\n fields they off api\n \"gizmo\": \"source\": \"citation\": \"alt\": \"caption\": \"\"\n reading individual nodes \"read\": \"node/<%= id %>\",\n \"deep-load-refs\": \"node\"\n editing inputs \"edit\": \"put\",\n %>/update\"\n adding / uploading details\n \"add\": \"post\",\n \"node\",\n \"a new item\",\n \"img\": \"this image\"\n delete request \"delete\": \"delete\",\n %>/delete\"\n }\n}"},{"id":"itemf0af8879-a79c-4d1c-afc4-e","title":"CSS vars","created":1553349518,"location":"documentation-1/haxcms/theming/css-vars","description":"CSS can be modified via CSS variables. CSS variables create a happy middle ground between the constraints of Shadow DOM (namely that styles are fully encapsulated) and designers wanting flexibility a","text":"css can be modified via variables . create a happy middle ground between the constraints of shadow dom (namely that styles are fully encapsulated) and designers wanting flexibility control over design. we leverage heavily in our template layer to allow you \"skin\" just about any theme have already.\na note @apply\nunlike normal variables, polymer (the library build on) supports convention for operate bit more like saas mixins. write blocks code @apply --my-variable-blob;\n which will then someone mix apply whatever valid attributes they want at level. see several implemented below (both blocks).\nexample\nthis is an example from haxcms-basic-theme \nwhich forms clean baseline most sites.\n // this haxcms-basic-theme\nsite-top-menu {\n --site-top-menu-bg: #37474f;\n --site-top-menu-link-color: #ffffff;\n --site-top-menu-indicator-color: --site-top-menu-link-active-color: var(\n --haxcms-basic-theme-accent-color\n );\n --site-top-menu-indicator-arrow: 8px;\n}\nsite-children-block --site-children-block-button: color: }\n --site-children-block-button-active: background-color: var(--haxcms-basic-theme-accent-color);\n }\n}\n.left-col min-height: 250px;\n border: 2px solid black;\n white;\n padding: 16px;\n}\nsite-active-title display: inline-flex;\n --site-active-title-heading: font-family: \"montserrat\", \"helvetica\", \"tahoma\", \"geneva\", \"arial\",\n sans-serif;\n font-size: 16px;\n line-height: 32px;\n margin-bottom: 8px;\n text-rendering: optimizelegibility;\n font-weight: 600;\n }\n}"},{"id":"itemdfd62788-ba48-4051-a869-9","title":"Concepts","created":1550643005,"location":"documentation-1/haxcms/concepts","description":"HAXcms seeks to be a microsite generator and manager that doesn't require any command line in order to operate. HAXcms leverages HAX to give a best in class authoring experience while HAXcms seeks to","text":"haxcms seeks to be a microsite generator and manager that doesnt require any command line in order operate . leverages hax give best class authoring experience while eliminate all the barriers then publishing content online.\nsome words phrases worth understanding haxcms\nhaxeditor - editor\nmicrosite an individual site that's been created by user\noutline sites are outline, we use json outline schema manage this\ntheme single web component based theme agnostic of content\nelements / components design assets work anywhere"},{"id":"iteme3dafe1a-1f50-1834-68f3-9","title":"Add Content","created":1548826475,"location":"documentation-1/ux-concepts/add","description":"Add Content is how you create and add complex blocks to the HAX page editor. These blocks can be variable based on what you chose to include (see appstore) but ultimately are just adding web compon","text":"add content  is how you create and complex blocks to the hax page editor. these can be variable based on what chose include (see appstore\n) but ultimately are just adding web components editable area of page. then tell surface an editing interface which writes properties, attributes, slots element in"},{"id":"item275a0928-60ab-b7ce-c2b6-d","title":"Core concepts","created":1548826475,"location":"documentation-1/core-concepts","description":"","text":"a gizmo is an advanced piece of media or interactivity placed on the page. at technical level, it web component, but to your users and content readers its functionality helping them complete task. maybe they want embed article from wikipedia, create gorgeous, responsive video. how would do that without code knowledge? gizmo's ensure have consistent visual presentation authoring experience across myriad complex functionality. any component can be wired support hax.\nan app adds remote data capabilities hax. search youtube leaving editing experience? hax apps are way that. show up for under find\n\n\n menu while we provide definitions talking commonly used apis, modified connect almost anything."},{"id":"item39074718-758f-d51b-1dc5-1","title":"hello-world element","created":1548826475,"location":"documentation-1/hax-development/hello-world-element","description":"Let's see what goes into the element called @lrnwebcomponents/example-hax-element in order to learn how we can wire anything up to HAXeditor.@lrnwebcomponents/example-hax-element/example-hax-elem","text":"lets see what goes into the element called @lrnwebcomponents/example-hax-element \n \nin order to learn how we can wire anything up haxeditor.\n@lrnwebcomponents/example-hax-element/example-hax-element.js\n \n// import reference haxwiring use in your element\nimport { } from \"@lrnwebcomponents/hax-body-behaviors/lib/haxwiring.js\";\n// connectedcallback is a life cycle hook web component specification\n// tie it so that when this appended dom\n// tell hax exists\nconnectedcallback() {\n// establish wiring\nthis.haxwiring = new haxwiring();\n// call setup which will ensure hax-store ready\nthis.haxwiring.setup(\n {\n canscale: true,\n canposition: caneditsource: false,\n gizmo: title: \"example hax-element\",\n description:\n \"provide an example pick apart of working element\",\n icon: \"icons:android\",\n color: \"green\",\n groups: [\"hax\"],\n handles: [\n type: \"todo:read-the-docs-for-usage\"\n }\n ],\n meta: author: \"you\",\n owner: \"your company\"\n },\n settings: quick: [],\n configure: property: \"title\",\n description: \"\",\n inputmethod: \"textfield\",\n required: \"icons:android\"\n \"available\",\n \"boolean\",\n advanced: []\n 'example-hax-element',\n this\n );\n}"},{"id":"item650eaa59-478c-4674-8ef3-9","title":"HAXcms","created":1563972322,"location":"welcome/why-haxcms-1","description":"HAXcms powers this website and is a hybrid static site generator, a new class of CMS. It's hybrid in that everything is written to static like a static site generator and it's 100% decoupled via web ","text":"haxcms powers this website and is a hybrid static site generator, new class of cms. its in that everything written to like generator it's 100% decoupled via web components.\n\n\n\nfeatures\nmicro-site manager, so manage multiple sites from single install\neach powered by files which live version control\nevery change executed the front end hax / outline tools\nevery automatically tracked control (zip folder send it friend it'll work)\nthe \"database\" site.json file lives with site\nall operations write every as if you editing html hand (but didn't... did)\nability serve up on cdns (this gh pages + cdn) publishing makes purely copy service worker whole jazz for offline installable capability (0 config)\nbuild your own themes custom dev or use one our baked ones\n\nit flat ui contextually loads based should see it. weird, we know, that's also why have trouble describing what is. cms without tooling required. sustainable way building maintaining \"cms\" has pages, can handle fields, themes, but yet doesn't require infrastructure keep running beyond php node beaker browser act back edit files.\nit's an organic living permanent website. hacking limitations content authoring capabilities. say, we're web.\ncore principles\nsupport all platforms devices (cms, app, etc)\nempower authors code ever looking at code\nall produced must work haxeditor available\nsupport older markup, regardless structure, best can\nhax will learn rules producing elements, won't dictate them\ndecentralize things, empower peoples\n\ncross platform\nbecause we've adopted component\n\n standard development both (authoring system) (content management), create compile open tooling\n can support about 98.4% traffic globally server side rendering. employs progressive enhancement methodology meaning hit browsing content.\nthis means latest greatest not constantly worry library changing! dawn age components now, join revolution!\nplatform support\nevergreen\n browsers\n (93+% traffic) - no polyfills!\n\nie 11 edge \nsee f.a.q.\n more detailed break out stats\n\nno lock-in\nthe elements make be delivered cdn installed locally. functionality tied browser\n\n and not\n\n to platform itself (huh?). well, think complex any you've built used. then add site. now move (in mind) another server. migrated maintain functioning isn't actually content?\nfor example, take quiz:"},{"id":"item5a6e6643-3834-4ac5-ae70-0","title":"Installation","created":1550643005,"location":"documentation-1/haxcms/installation","description":"Generic PHP install directionsHave PHP? well then you can setup HAXcms pretty quick. Just download HAXcms and navigate to its directory in a browser. It'll attempt to automatically install (which is ","text":"generic php install directions have php? well then you can setup haxcms pretty quick. just download and navigate to its directory in a browser. itll attempt automatically (which is create two basic folders). if all goes you'll see some ascii art telling what your password is. seeks be 0 config installation so anything didn't work or make sense, drop us line the issue queues.\n\nquick start installation\nnote: this installs ddev docker on linux / mac users possible needed. for windows \n\tyou will need desktop \n\t( \n\t\thttps://docs.docker.com/docker-for-windows/install/\n\t) one of following ddev, lando, docksal as well.\n\n\n \n curl -fssl https://raw.githubusercontent.com/elmsln/haxcms/master/scripts/haxcmsme.sh -o haxcmsme.sh && sh haxcmsme.sh\n \n\n\nor from command line...\njust run haxing web no time! step through prompts scripted via arguments) feed backend it needs few configuration files uses load.\n # hax answer prompts\nbash scripts/haxtheweb.sh\n\na note bash\n\n\n\n\nif you're having issues installing bash script, ensure are version 4.x. os flavors at 3.x which won't work.\n\n\n\n\nmamp\nmamp\n\n\n\n\n\n\n allows pc rapidly working webdev stack their machine. here's steps take using (or similar site hosting).\ndownload latest copy github\n\n\n\n and place mamp/htdocs \n\neither root level (as copying into htdocs shown image below) by placing folder (in case where mamp already installed want keep things tidy).\n\nopen hit servers button\n\n\n\n\n\nclick my website page get started\n\n\n\n\nnow build organically off mamp!\nddev lando vagrant\nwe recommend container manager like ddev\n\n\n\n\n\n\n, though based above basically we're downloading running going. we support methods pick with most often.\n\nclone repo: git clone https://github.com/elmsln/haxcms.git\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ninstall docker\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ninstall ddev\n\n\n\n\n\n\n\n docksal\n\n\n\n\n\n\n\n lando\n\n\n\n\n\n\n\n vagrant\n\n\n\n\n\n\n\n (we 'em all!)\n\n\n\n\n\n\n\n\nopen terminal window, go type start\n\n\n\n\n\n\n\n (for ddev) fin init\n\n\n\n\n\n\n\n docksal) magic\n\n\n\n\n\n\n\n lando) vagrant up\n\n\n\n\n\n\n\n vagrant)\n\n\n\n\n\n\n\n\ngo link any them give browser\n\n\n\n\n\n\n\n\nusername/password admin\n\n\n\n\n\n\n\n/admin\n\n\n\n\n\n\n\n building out static sites locally that push up anywhere!\n\n\n\n\n\n\n\n\nclick icon top right running!\n\n\n\n\n\n\n\n\n\napache gotchas\nif an existing server might apache configurations would cause gate\n cms matter). sure local overrides allowed something following:\n\n /etc/apache2/apache2.conf\n\n<directory var/www/haxlocation>\n\toptions indexes followsymlinks\n\tallowoverride all\n\trequire granted\n</directory>"},{"id":"itema91393ea-31f8-30bd-888f-2","title":"blox","created":1548826475,"location":"documentation-1/hax-development/hax-app-store/blox","description":"","text":"blox are the internal name of what a normal wysiwyg would call layouts. layouts menu lists / grid-plate tags that you can populate. theres no other way to generate layout plate in hax ensure decent defaults produced. schema below will definition seen above.\n {\n\"blox\": [ {\n // details for displaying this visually ui\n \"details\": \"title\": \"33 66 columns\",\n \"author\": \"elms:ln\",\n \"icon\": \"hax:4/8\",\n \"status\": \"available\",\n \"layout\": \"4/8\"\n },\n piece which is series element definitions as an array\n \"blox\": [\n \"tag\": \"place-holder\",\n \"properties\": \"slot\": \"col-2\",\n \"type\": \"text\"\n \"content\": \"\"\n \"col-1\",\n \"image\"\n }\n}]\n},"},{"id":"item504d6323-873d-49e3-9de0-f","title":"Get Involved!","created":1553197584,"location":"get-involved-1","description":"Join our communityJoin us on the HAXTheWeb Slack channelJoin us for HAXcamp Un-code every Friday 3 pm - 5 pm (EST)Follow / use the #HAXTheWeb hash tagJoin our projectsHAXcms - That which ","text":"join our community us on the haxtheweb slack\n channel\njoin for haxcamp un-code\n every friday 3 pm - 5 (est)\nfollow / use the #haxtheweb hash tag\n\n\njoin projects\nhaxcms\n that which powers this website\nunbundled-webcomponents\n a methodology for building and deploying web components to cdns we in all projects\nweb monorepo\n - editing experience (and other tags matter)\nwcfactory\n build maintain your own component library, why should be special.\ncheck out integrations page\n platform specific repos\n\norganization wants get involved?\ngreat! heres some of best ways organizations try \"hax\" involved project.\nreach any members core project team slack\n. we're happy do conference calls forge partnerships especially around hax or oer production solution though it has implications public site!\ntry haxcms live demo\n (reset hourly)\nreach issue queue\n with questions\nbring website developers organization code junkies tell them explore\nhost camp\n (ask more details)\n\nhax makes up multiple projects across hundreds various repos. can bit overwhelming but want you imagine something... being developer hax.\n\n step 'ight up\n \n urz te next contrib\nbecause takes is, that's right, showing repos getting involved! yes too just as meme-able are!\nall things are powered by people like you, wanting make better, accessible, easier use, less painful develop for... place.help reality could have snoop dawg escorting over brand new car*\nanything is possible haxtheweb. only limit...is yourself\n.\n*claims vs may vary. help we'll see where goes.."},{"id":"itemac67dab5-8208-65e3-c3e4-2","title":"Integrations","created":1548826475,"location":"integrations-1","description":"HAX provides plenty of ways to integrate into the platforms you already use! Here are some of the plugins and integrations below this heading.Some things a liittle bit crazyCode Pen?!Demonstration","text":"hax provides plenty of ways to integrate into the platforms you already use! here are some plugins and integrations below this heading. things a liittle bit crazy\ncode pen\n?!\ndemonstration autoloading any web component\n in codepen from cdn\nhax bookmarklet\n (allows injecting website, see for details)\nweb-component-izer\n - inject clip parts sites (good exploring component ecosystem we ride on)\nelectron apps once ours reaches maturity youll know!"},{"id":"item3859b3ac-1ef5-45b4-909c-3","title":"Skin a site","created":1553354507,"location":"documentation-1/haxcms/theming/skin-a-site","description":"Theme skinning is the easiest way to build a decent looking theme in HAXcms. This method is geared toward people that know CSS and HTML but can't get into the weeds of web components or javascript.Wo","text":"theme skinning is the easiest way to build a decent looking in haxcms. this method geared toward people that know css and html but cant get into weeds of web components or javascript. workflow\nmake new site haxcms ui\n\nselect \"custom theme\" as your theme\nin file system go _sites/mynewsite\n/theme\nedit theme.html modify structure\nedit theme.css design\n\nthis skin liking. it's able ship work cdns minimal barrier entry for those used seeing files they can touch see change. it requires no tooling utilize either!"},{"id":"itemeca7c8a4-393a-4e68-8cb4-4","title":"Block settings","created":1597689709,"location":"item-eca7c8a4-393a-4e68-8cb4-440e94683738","description":"Block settings will change contextually based on which block has been selected in the editable area of the page. In this screenshot, a paragraph has been selected and so the icon associated with it is","text":"block settings will change contextually based on which has been selected in the editable area of page. this screenshot, a paragraph and so icon associated with it is shown as well name element. if we meme or other tag wed see contextual what that html element tells hax should be editing interface. normal tag\nmeme tag\nnotice now additional fields when changed are reflected page instantly!"},{"id":"item44a138ea-5122-4a2b-b2ce-8","title":"Structure","created":1550643005,"location":"documentation-1/haxcms/structure","description":"By design we've got a very simple structure. The goal of HAXcms isn't to lock you into anything and so we've simplified our file structure over other solutions.The key directories / files include:fi","text":"by design weve got a very simple structure. the goal of haxcms isn't to lock you into anything and so we've simplified our file structure over other solutions. key directories / files include:\nfiles - any you've uploaded through hax interface\n\npages folders named their content uri that have index.html in it, no then what created when hitting save\nsite.json json outline schema object defines pages your site relationship each other\nindex.html front page pwa stitch it all together\nservice-worker.js makes pwa, need edi this\n\nscreen grab microsite"},{"id":"itemf1c8e3a4-eddb-806a-8a3a-2","title":"HAX schema","created":1548826475,"location":"documentation-1/hax-development/hax-schema","description":"Implementing HAXSchemaIn order for your element to talk to the HAX editor, you need to implement static get haxProperties() on your element. This callback either returns a String based location of ","text":"implementing haxschema in order for your element to talk the hax editor, you need implement static get haxproperties()\n on element. this callback either returns a string\n based location of where lives or json blob directly. appstore documentation page also describes how can integrate without defining directly element.\nexample definition via file reference\n\nexample element\n\nexample specification\n\n\nunderstanding haxschema\nhaxschema is name our standard expressing way communicate with and web component. this broken into two major groupings settings some basic boolean\n.\n \n// item be scaled ui, will it have slider % width\ncanscale: true,\n// position left center justified\ncanposition: edit raw source (future)\ncaneditsource: false\n\nafter these booleans we \"gizmo\" section. gizmo what internal code base were calling custom as represented interfaces like make\n area. reason so that word isn't everywhere else would too confusing. should reference interfaces.\na detailed example below comments\n \ngizmo: {\n// title display\ntitle: \"example hax-element\",\n// description\ndescription:\n \"provide an pick apart working element\",\n// icon represent selection displays\nicon: \"icons:android\",\n// color tint when displays\ncolor: \"green\",\n// grouping data filtering displays (future)\ngroups: [\"hax\"],\n// handlers allow stitch together sources information gizmos render information\n// example: youtube supplies value points url video\n// if user picks video from youtube, things match\n// 'video' type then match any 1 additional field\n// presented case presents video-player qr code\n// default implementations tags.\n// because source, which key source\n// handles block => property insert into\n// array objects map multiple types\n// reserved anything long as\n// looking something matching \"type\"\nhandles: [\n{\n // present\n type: \"video\",\n coming app right\n source: \"source\",\n pulls off api sticks caption field element\n title: \"caption\",\n fallback matches\n caption: description: ability pull across though rare api\n color: \"primarycolor\"\n}\n],\n// metadata wish ship along\nmeta: {\n author: \"you\",\n owner: \"your company\"\n}\n},\nsettings wiring up hax\nsettings forms capable elements are grouped three different areas. quick \nsettings segment of schema provides edit, singular properties ui icons. present select (see screenshot).\n \n \n\n \nsettings: {\nquick: [\n property: \"accentcolor\",\n \"accent color\",\n \"select accent player.\",\n inputmethod: \"colorpicker\",\n icon: \"editor:format-color-fill\"\n },\n attribute: \"dark\",\n \"dark theme\",\n \"enable dark theme \"boolean\",\n \"invert-colors\"\n }\n],\nconfigure block\nthe configure section shows moving manager\nafter hitting settings, you'll see manager open defaulted display.\n \nconfigure: \"the video.\",\n \"textfield\",\n \"link\",\n required: true,\n validationtype: \"url\"\n},\n{\n \"track\",\n \"closed captions\",\n captions file.\",\n \"thumbnailsrc\",\n \"thumbnail image\",\n \"optional. thumbnail/poster image.\",\n \"mediatitle\",\n \"title\",\n \"simple under video\",\n \"av:video-label\",\n false,\n \"text\"\n},\n{\n \"editor:format-color-fill\"\n},\n{\n \"invert-colors\"\n}\n],\nadvanced advanced configuration selects advanced\n \nadvanced: \"darktranscript\",\n transcript\",\n transcript.\",\n \"boolean\"\n},\n{\n \"hidetimestamps\",\n \"hide timestamps\",\n time stamps \"preload\",\n \"preload source(s).\",\n description:\n \"how preloaded, i.e. auto, (default), none.\",\n \"select\",\n options: preload: all media\",\n metadata: media only\",\n none: \"don't preload anything\"\n }\n},\n{\n \"stickycorner\",\n \"sticky corner\",\n \"set corner plays scrolled out range, choose none disable sticky \"none\",\n \"top-left\": \"top-left\",\n \"top-right\": \"top-right\",\n \"bottom-left\": \"bottom-left\",\n \"bottom-right\": \"bottom-right\"\n \"sources\",\n \"other sources\",\n \"list other \"array\",\n properties: \"src\",\n \"textfield\"\n \"type\",\n \"media data\",\n \"audio/aac\": \"acc audio\",\n \"audio/flac\": \"flac \"audio/mp3\": \"mp3 \"video/mp4\": \"mp4 \"video/mov\": \"mov \"audio/ogg\": \"ogg \"video/ogg\": \"audio/wav\": \"wav \"audio/webm\": \"webm \"video/webm\": video\"\n }\n ]\n},\n{\n \"tracks\",\n \"track list\",\n \"tracks languages closed \"kind\",\n \"kind track\",\n subtitles:\n \"subtitles\" /*,\n future features\n 'description': 'description',\n 'thumbnails': 'thumbnails',\n 'interactive': 'interactive',\n 'annotation': 'annotation'*/\n \"label\",\n 'the human-readable track, eg. \"english subtitles\"',\n \"source \"srclang\",\n title:\n 'two letter, language code, \\'en\\' english, \"de\" german, \"es\" spanish, etc.',\n ]\n}\n]\n}"},{"id":"item29e7d7f5-db3e-3ef0-733a-e","title":"Solutions","created":1548826475,"location":"welcome/solutions","description":"Modularity is key to HAX success. Here are some of the solutions that HAX provides which leverage the HAXeditor interface.HAX editorHAX or HAXeditor is the editor of the future you're using in this ","text":"modularity is key to hax success. here are some of the solutions that provides which leverage haxeditor interface. editor\nhax or editor future youre using in this site! it's all editing capabilities you've come for with and core solution other projects based on here. most common way via one many integrations. check out the integrations\n page find works best you\nhaxcms\nhaxcms slimmest possible content management system thanks awesome power hax. haxcms boils creation down a handful files behind scenes, highly readable small.\nhaxcms by loading single \"site.json\" file contains relationships between pages your site. those stored html files, used as manipulate. cms then acts simple server technology basically update two making easy publishing.\nhaxcms has publishing baked github pages. read documentation\n section get deeper. this website you're viewing powered edit controls bottom right would site if were live implementation (this demo'ing capabilities).\nhow fits into organization\nhax (and haxcms) trying lead you education's \"roku remote\" moment. i mean, world where have very little box (haxcms) can be controlled completely uniform, manner (hax) actually pulls together universe media from across organization. helps bridge knowledge gap creators publishers. it eliminates work involved (that none us want do anyway)!\n\nhaxiam\nhaxiam (hax-i-am\n ) saas platform code base that's deploy multiple people. an abstraction enables users point deployment.\nhaxiam leverages hooks built allow integration enterprise login providers, perfect fit organizations looking provide their micro-site publishing.\nit's still early but haxiam github\n ."},{"id":"item17449951-7504-468a-b315-4","title":"Web components","created":1553349518,"location":"documentation-1/haxcms/theming/web-components","description":"Do you know full on web component development? Well, you can build a new theme from scratch. The best way to learn is by picking a part some of our examples. For this we'll analyze the haxcms-slide-th","text":"do you know full on web component development? well, can build a new theme from scratch. the best way to learn is by picking part some of our examples. for this well analyze haxcms-slide-theme \n.\nimport classes / components\n import { html, polymerelement } \"@polymer/polymer/polymer-element.js\";\nimport haxcmstheme \"@lrnwebcomponents/haxcms-elements/lib/core/haxcmsthemewiring.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-title.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-print-button.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/active-item/site-active-title.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-dot-indicator\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-menu-button.js\";\nimport \"@polymer/paper-icon-button/paper-icon-button.js\";\nimport \"@polymer/iron-icons/iron-icons.js\";\nimport \"@polymer/paper-tooltip/paper-tooltip.js\";\nimport \"@lrnwebcomponents/simple-colors/simple-colors.js\";\nimport \"@lrnwebcomponents/hax-body/lib/hax-shared-styles.js\";\n\nas see imports few basic components helpful in development most themes. first we and mix-in wiring library. provides basis any custom element into state management haxcms, typically without having deal with concepts state!\nmix-ins\n class haxcmsslidetheme extends haxcmstheme(polymerelement) {\n\nnext get statement. note how wraps class, thereby giving us mix two together.\nhaxcmstheme class\nyou more about what digging haxcmsthemewiring.js\n\n class. bridges haxcms store (written mobx) design layer. leverage anything writing polymer convention referencing data bound variable template.\nhere's variables you'll commonly see\n\n themes, direct an example dom bind that would look like template\n [[sitetitle]]\n[[ancestortitle\n[[parenttitle]]\n[[activetitle]]\n\n [[activeitemfields.images.0.url]]\n\n\nthat last line with activeitemfields raw power under hood approach. use create field definitions (in haxschema\n\n) then extend capabilities your pages.\nrequired css\nthere one small required block css when doing haxcms. it following:\n /**\n * hide slotted content during edit mode. must be here work.\n */\n:host([edit-mode]) #slot {\n display: none;\n}\n\nthis helps ensure user clicks button they haxeditor as opposed body are currently working with. hit save, sends backend which updates front end changes. ensures isn't visible editing.\nrequired html\n \n \n\n\nrelated css, following html appear template somewhere (or case simple-blog\n, leveraged theme). make whatever want beyond but correctly target integrated using mix-in. there ways position reposition dynamically will not covered seen simple-blog\n.\nfrom there, away. write js want! themes referenced docs all provide blue prints different leveraging system.\nnext we'll discuss core elements order even cleaner!"},{"id":"item5a9ea17e-63ce-96f3-e94f-d","title":"WordPress","created":1549428503,"location":"integrations-1/wordpress","description":"We support WordPress too! In order to use HAX though you'll want to replace the Gutenberg editor. The following steps will help you get it up and running.Get the Classic Editor. This plugin helps re","text":"we support wordpress too! in order to use hax though youll want replace the gutenberg editor. following steps will help you get it up and running. classic editor\n. this plugin helps restore back what wanted\nget the hax plugin\n, unzip rename hax\nbreak free of platform specific assets content"},{"id":"itemdb25d465-f8ee-6d9b-a738-f","title":"Documentation","created":1548826475,"location":"documentation-1","description":"HAX may seem complex, but it's built on a series of standards that will never break. As a result of the complexity of these standards, there are things you should know prior to digging into HAXedit","text":"hax may seem complex, but its built on a series of standards that will never\n\n break. as result the complexity these standards, there are things you should know prior to digging into haxeditor core or any related solutions\n\nstorybook / styles element listing\nwant get started with using our various elements? then check out robust design storybook\n full elements, examples, and api details.\n\n \n\nmany members development team participate in show called camp uncode\n.\nblogging social\nhere's some social media blogs follow for additional writing, tutorials videos about hax.\nbtopro\n, nikkimk\n, haxtheweb\n, haxcamp\n twitter accounts\nyoutube channel\n\ndev.to blog"},{"id":"itemfaaa1198-10c7-ff30-ece6-0","title":"stax","created":1548826475,"location":"documentation-1/hax-development/hax-app-store/stax","description":"Stax are what most WYSIWYG systems would call Templates. Stax in HAX are a series of HAX element schema's in succession.Below is a definition for the \"example lesson\" seen above. This is a larger ex","text":"stax are what most wysiwyg systems would call templates. in hax a series of element schemas succession. \nbelow is definition for the \"example lesson\" seen above. this larger example, templates will probably only be few items. stack template like blox / layout except pieces do not have to move as group and they can deleted. it's more shortcut generating details area describes visually ui while subsequent stax\n\n\n property an array schemas.\n \"stax\": [\n{\n\"details\": {\n\"title\": lesson\",\n\"image\": \"\",\n\"author\": \"elms:ln\",\n\"description\": \"an example do\",\n\"status\": \"available\",\n\"rating\": \"0\",\n\"tags\": [\n\"example\"\n]\n},\n\"stax\": [\n{\n\"tag\": \"h2\",\n\"properties\": {},\n\"content\": \"introduction elms: learning network\"\n},\n{\n\"tag\": \"p\",\n\"properties\": \"what network? how it fundamentally different from other technologies? why your reading when text that you've just added see make really solid introduction new unit instruction? let's keep find out!\"\n},\n{\n\"tag\": \"video-player\",\n\"properties\": {\n\"style\": \"width: 75%; margin: 0px auto; display: block;\",\n\"source\": \"https://www.youtube.com/watch?v=pklpq4ufo64\",\n\"src\": \"https://www.youtube-nocookie.com/embed/pklpq4ufo64?showinfo=0&controls=1&rel=0\",\n\"iframed\": true,\n\"sandboxed\": false,\n\"width\": \"560\",\n\"height\": \"315\",\n\"responsive\": true,\n\"caption\": elms:ln? any educational technology that's ever existed? sustainable innovation? so ...\",\n\"secondarycolor\": \"#fff9c4\",\n\"textcolor\": \"#000000\",\n\"secondarycolorclass\": \"yellow lighten-4\",\n\"textcolorclass\": \"black-text\",\n\"ytnocookie\": true,\n\"ytsuggested\": false,\n\"ytcontrols\": true,\n\"yttitle\": false,\n\"vimeotitle\": false,\n\"vimeobyline\": false,\n\"vimeoportrait\": false,\n\"videocolor\": \"ff031d\",\n\"resource\": \"#86bfd28d-8b57-a3b9-b2e5\",\n\"prefix\": \"oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org \"\n},\n\"content\": \"\"\n},\n{\n\"tag\": \"h3\",\n\"properties\": \"pretest\"\n},\n{\n\"tag\": \"self-check\",\n\"properties\": 50%; float: right;\",\n\"title\": \"self-check\",\n\"image\": \"https://farm1.staticflickr.com/642/21641107852_3602f9c1a8_b.jpg\",\n\"alt\": \"a stickers associated with elms:ln shown presented on back laptop.\",\n\"correct\": false,\n\"textcolor\": \"#000000\",\n\"textcolorclass\": \"black-text\",\n\"backgroundcolor\": \"#b2dfdb\",\n\"backgroundcolorclass\": \"teal lighten-4\",\n\"resource\": \"#08d09967-a7c9-3d02-8935\",\n\"prefix\": \" true or false. traditional management system.\\n\\n network considered next generation digital environment.\\nlearn about ngdle blog post educause\\n.\\n\\n\"\n},\n{\n\"tag\": \"if you think already know elms:ln, out ahead time! take self-check right if system something more\"\n},\n{\n\"tag\": \"hr\",\n\"properties\": 75%;\"\n},\n\"content\": \"history review\"\n},\n{\n\"tag\": \"now we've read (and not). kind illustrate flexibility authoring platform.\"\n},\n{\n\"tag\": \"multiple-choice\",\n\"properties\": block;\",\n\"checklabel\": \"check guess\",\n\"resetlabel\": \"clear\",\n\"hidetitle\": true,\n\"question\": \"who founded platform?\",\n\"answers\": [\n{\n\"correct\": true,\n\"label\": \"bryan ollendyke\"\n},\n{\n\"correct\": false,\n\"label\": \"mythic elves\"\n},\n{\n\"correct\": \"michael potter\"\n},\n{\n\"correct\": \"nikki massaro kauffman\"\n},\n{\n\"correct\": \"charles lavera\"\n}\n],\n\"correcttext\": \"great job!\",\n\"incorrecttext\": \"try again\",\n\"randomize\": true,\n\"typeof\": \"oer:assessment\",\n\"resource\": \"#97ffed48-c928-39ae-1bea\",\n\"prefix\": block;\",\n\"title\": \"elms development team\",\n\"checklabel\": \"clear answers\",\n\"hidetitle\": false,\n\"question\": responsible existing? who improves wants best solution transform education world?\",\n\"answers\": lavera\"\n},\n{\n\"correct\": \"anyone, open community developed by multiple organizations!\"\n}\n],\n\"displayedanswers\": organizations!\"\n}\n],\n\"correcttext\": job! got our trick question!\",\n\"incorrecttext\": again, there's some answers...\",\n\"randomize\": \"#59426af4-ecf2-f49d-06a6\",\n\"prefix\": \"\"\n}\n]\n}\n]\n}"},{"id":"item251f207e-4046-a4b0-40ce-7","title":"Search","created":1548826475,"location":"documentation-1/ux-concepts/find","description":"Search is a data interoperability layer to HAX where web components data binding shines. Search is able to stitch remote data together with local web components in order to streamline workflows. You ","text":"search is a data interoperability layer to hax where web components binding shines. able stitch remote together with local in order streamline workflows. you can any source directly context and then drag drop or click the item question add it page your building instantly."},{"id":"item06233713-d866-3351-81da-8","title":"UX concepts","created":1548826475,"location":"documentation-1/ux-concepts","description":"The HAX UI can be broken down into three major production concepts. Content authors are either:Adding something they already haveEditing the Settings of the activated element on the pageSearch for ","text":"the hax ui can be broken down into three major production concepts. content authors are either: adding something they already have\nediting settings of activated element on page\nsearch for media from remote sources\nadd in a template or predefined layout page"},{"id":"item0e4cc53c-944f-658a-5440-e","title":"Related technologies","created":1548826475,"location":"documentation-1/related-technologies","description":"","text":"there are several technologies you should learn about if your going to understand how hax is built (and extend it) json schema\nlearn more schema\n\n\n\n on the official website for that standard. schema provides a way of describing data contained in blob so form can be modify those values. uses this extensively via tag called eco-json-schema-object\n\n\n\n and related tags, turn any definition into fully two-way binded form.\nexample\n // from https://www.tutorialspoint.com/json/json_schema.htm\n{\n \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n \"title\": \"product\",\n \"description\": \"a product acmes catalog\",\n \"type\": \"object\",\n\t\n \"properties\": {\n\t\n \"id\": {\n \"the unique identifier product\",\n \"integer\"\n },\n\t\t\n \"name\": \"name \"string\"\n \"price\": \"number\",\n \"minimum\": 0,\n \"exclusiveminimum\": true\n }\n },\n\t\n \"required\": [\"id\", \"name\", \"price\"]\n}\n\nhax schema\n\n\n\n\n an abstraction sits top order provide forms updating values wired elements. wanted types input fields has access then learning would best place start!\njson outline schema\n\n\njson schema\n standard expressing storing relation between objects. it gives simple linking together concepts / entities. here example entity:\n \"unique-id-of-the-item-1\",\n \"indent\": \"1\",\n \"location\": \"name-of-some-file-or-location.html\",\n \"order\": \"0\",\n \"parent\": \"unique-id-of-the-parent\",\n some file or location\",\n \"metadata\": {}\n}\n\nthis enough visually represent information form. let's look at larger 3 items which express nested hierarchy consistent way:\n \"123-ddc-d321d-d2e-dd2\",\n \"my outline\",\n \"author\": \"lrnwebcomponents\",\n series material teach structure content.\",\n \"license\": \"by-sa\",\n {},\n \"items\": [\n \"item-1\",\n \"outline.html\",\n null,\n \"outline\",\n description glance item potentially\",\n \"icon\": \"icons:view-quilt\"\n },\n \"item-2\",\n \"2\",\n \"introduction.html\",\n \"introduction outlines\",\n {}\n \"item-3\",\n \"files/a-2nd-page-item.html\",\n \"an ]\n}\n\nlet's break down these properties why we have them schema:\nhigher schema\n`title\n` - name work as whole\n`author\n` who created work\n`description\n` short explain it\n`license\n` valid license hard whole\n`metadata\n` area additional details work. no but could used relating needed.\n`id\n` universe all works\n`items\n` array elements contain pages leaves outline\n\nleaf page element within structure\n`id\n` uuid id element\n`indent\n` far position inward. something parent only indented 2 levels\n`location\n` resource references display here\n`order\n` weighting relative other match level\n`parent\n` child of\n`title\n` title display\n`description\n` it\n`metadata\n` container need ship."},{"id":"itema839d5c1-3321-a395-c032-4","title":"autoloader","created":1548826475,"location":"documentation-1/hax-development/hax-app-store/autoloader","description":"Autoloader is waaayyy easier to implement then the other parts of the appstore spec and is probably the most important as it loads all the elements that will be available to your users. All it is is a","text":"autoloader is waaayyy easier to implement then the other parts of appstore spec and probably most important as it loads all elements that will be available your users. an array or object references hax should forcibly load definitions once its done bootstrapping. here's a basic example with steps what does this information \n definition\n finishes bootstrap ready use\n loops through each element following:\n attempts dynamically import definition element\n creates instance (virtually) looks for static get haxproperties\n if exists valid haxschema you can leverage in hax!\n \n\nspec details\nthere are few different ways declare schema. here simple three common forms we'll explain each.\n\n \"autoloader\": {\n \"meme-maker\": \"@lrnwebcomponents/meme-maker/meme-maker.js\",\n \"another-tag\": \"import\": \"some-other-location/bare-import-name/whatever.js\"\n },\n \"vaadin-upload\": \"@vaadin/vaadin-upload/vaadin-upload.js\",\n \"haxproperties\": \"canscale\": false,\n \"canposition\": \"caneditsource\": true,\n \"gizmo\": \"title\": \"vaadin upload button\",\n \"icon\": \"upload\",\n \"color\": \"orange\",\n \"groups\": [\"upload\", \"community\"],\n \"meta\": \"author\": elements\"\n }\n \"settings\": \"configure\": [\n \"property\": \"label\",\n \"description\": \"label \"inputmethod\": \"textfield\"\n ]\n \"saveoptions\": \"wipeslot\": true\n }\n}\n\ndefinition from file\nthe method simply \"tag-name\": \"location-of-tag.js\"\n. you'll see importing anything that's been published with\n \n haxproperties\n. also use add own / built have their haxproperties.\n\ndefinition import\nthis basically just enable future support defining capabilities at run time. could used issue but not actually (so \"whatever\": { \"\"}\n ). because possibly logistics cms application charge when\n gets imported.\n\ndefinition + schema\nthis powerful verbose. allows potentially someone else's not\n haxschema\n defined, define yourself on fly! means community supply wiring talk based mental model. up hax, performance benefit building design library including class element."},{"id":"itemaa589faa-e860-4221-82fa-d","title":"Templates and Layouts","created":1597689709,"location":"item-aa589faa-e860-4221-82fa-df6d57328ac2","description":"Templates and layouts allow you to drop in pre-built pieces of content structure. This might be a series of images or an example of content that could be written.","text":"templates and layouts allow you to drop in pre-built pieces of content structure. this might be a series images or an example that could written."},{"id":"itema84c35ec-85c8-4c7c-b4ab-8","title":"Core elements","created":1552437937,"location":"documentation-1/haxcms/theming/core-elements","description":"While you're not required to use them, HAXcms supplies a series of elements that can make theme development effortless. You can see the source of these in greater detail under the theme directory of h","text":"while youre not required to use them, haxcms supplies a series of elements that can make theme development effortless. you see the source these in greater detail under directory haxcms-elements \n\n. this is brief overview what they are and provide your interface.\nhaxcms seeks apply sds pattern, technique we made up just for sentence, dramatic effect\n. as everyone knows who about read next heading, stands for:\nso. damn. semantic.\nwhew, i need an ice cold drink wash away semantic sweats.\nyes, that's right, allows complex state managed system without needing understand management... like... at all.\n\"but management it's important me\"\nthat's awesome, four people on twitter, but most designers want design! don't or intricacies making collapsed field area expand relative item has been dictated active store*.\n*an intentionally confusing worded sentence\n\n\n\nwe mobx do our management if something care some themes directly implement interface with layer. simple blog's footer element\n\n\n great example why pita.\n\n\nback jerk\nok fine, here are. here's list es module imports get them\n {\n \"dependencies\": \"@lrnwebcomponents/haxcms-elements\": \"latest\"\n }\n}\n\n import \"@lrnwebcomponents/haxcms-elements/lib/ui-components/active-item/site-active-title.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/blocks/site-children-block.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/blocks/site-outline-block.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/layout/site-footer.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/layout/site-modal.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-breadcrumb.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-dot-indicator.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-menu-button.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-menu.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-top-menu.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/query/site-query-menu-slice.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/query/site-query.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/query/site-render-query.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-print-button.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-rss-button.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-title.js\";\n\nnow each them (pretty self explanatory because #sds)\nsite-active-title - \nthe title wrapped h1 tag\n\nsite-children-block\n all child menu items based criteria match\nsite-outline-block\n part outline match\nsite-footer\n basic license element site details\nsite-modal\n modal button house other elements\nsite-breadcrumb\n\n breadcrumb trail item\nsite-dot-indicator\n links line dots\nsite-menu-button\n buttons navigating through menu. next, previous, parent first kinds options.\n\n\nsite-menu\n\n visualization hierarchy site, complete checkmarks given per page user goes (optional) well lot styling options highlighted bar scrolls into view small screens. fantastic one line.\nsite-top-menu\n top level indicator focus\nsite-print-button\n print support 4 levels printing site\nsite-rss-button\n displays link (opened new window) rss feed 2.0 atom 1.0 format (also applies correct values bots discover)\nsite-title\n homepage tag\n\n\n\nsee themselves more details api examples check out leverage heavily across core themes.\na word style\nwe css variables style bits inside custom elements. so if like styling, look available away. \"learn 2 theme\"\n\n\n implementing multiple against always know, go back reread section\n."},{"id":"item49d727fb-b5c8-871a-3979-a","title":"F.A.Q.","created":1548826475,"location":"f-a-q-1","description":"Are web components ready for prime time?Yes. Web components effectively turn the HTML of a site into a consistent API. HAXeditor leverages this approach and standardizes its usage in order to ","text":"are web components ready for prime time?\nyes. effectively turn the html of a site into consistent api. haxeditor\n leverages this approach and standardizes its usage in order to supply an incredible amount functionality browser. we do what vast majority cms provide prior interfacing with server. just files h-a-x\n\n tag understand how modify content.\nwhats browser support like?\nweb components\n can be compiled ie11 work all major browsers natively\nhaxeditor\n supports all browsers, though mostly test \"evergreen\" browsers.\nhaxcms\n support is broad but bit fragmented optimize experience per each device. from lowest highest quality (numbers based on global traffic data aggregate\n, last updated aug 2020\n)\nie (11) / safari (9.1) older - no js frame site\n (~ 1.8%) es5 fallback text\nedge (18 below) watered down ui\n .7%) es5\nedge + chromium 2020 will move it bottom\n\n\nfirefox 48-67 10.x (~1%) es5\nevergreen modern 96.5%) native es6!\n\n\n\ndo i have use elements haxeditor supplies?\nno. hax written such that the appstore specification\n defining available other demos. leveraging autoloader\n piece spec, you tell which tags load. component definitions schema kept separate as desired (useful editorial workflows permissions scenarios).\ndo these require operate?\nno! modifies inside itself then exports back html. means long your definitions, longer required render them!\nhax effectively writing same could by hand. help make semantic also ensure lives \"the platform\"; case, platform being so scope page, element unpack correctly or otherwise.\nhow does compare wordpress gutenberg plugin?\nin terms mission they attempt provide, click build website tonight, no-or-minimal-code solution masses... same. both seek reduce barriers entry expression. takes some critical differences philosophy design technical implementation goals open web.\nhax seeks improve publishing systems, haxcms otherwise. (which constructed in) tiny fraction want empower anyone self privacy, sovereignty, individuality peoples web. eliminate production, integration delivery material internet; it, not expensive part it. hax-the-web, hence domain name.\nsome larger points different highlighted below\nhax independent touches, agnostic. highly focused needs improving content authoring users.\ngutenberg embeds blocks layer nuance operations wildly block. example, tabbed list items may \"add another\" button inline believes editing across complex must delivered haxeditor, block level. illustrates ux users selecting way would any element. feel term adoption end-users training through lack cognitive load increase element.\ngutenberg sees \"add\" things primary construction method. if need upload media that's separately integrated process, dependent deliver. boils creation mental model author. authors either say \"i add\n something\" (add menu), find\n (find make\n (make create layout\n (blox layout menu) remix something template\n (stax template menu).\nthe system produces react specific logistics wordpress. produced out capable systems\n. believe extending broader capabilities first second duplication efforts globally improves resource sharing.\ngutenberg react, requiring plugins react. mix \"vanillajs\", litelement polymerelement elements. compatible library\n\n produce hax. while limited to, here popular examples natively talk hax:\nvanillajs following the web specification\npolymerelement\n\nlitelement\n\nskatejs\n\nslim.js\n\nsvelte\n\nvuejs\n (web wrapper)\nangular (compiled custom elements)\nany library passes testing custom-elements-everywhere\n should work\n\n\nwhere did come from?\nhax brain child elms:ln team at pennsylvania state university\n. originally created power elms:ln\n instructional innovations was quickly realized potential transform publishing.\nthe original core development evangelist infancy (an idea conceived 2016, experimented 2017, manifested 2018, actualized 2019):\nbryan ollendyke (@btopro\n) project lead developer\nmichael potter (@hey__mp\n) developer\nnikki massaro-kauffman (@nikkimk\n) - core developer\ncharles lavera (@cgldevel\n) collins (@_mike_collins\n) end user testing, assessment\nkatrina wehr (@katrinamwehr\n) assessment\nmelissa hicks (@juststormy\n) assessment, champion\n\nthere nothing can't together. us better together!\nex uno plures"},{"id":"itemca8c6ba8-c012-8ace-343a-3","title":"Drupal","created":1548826475,"location":"integrations-1/drupal","description":"Try on SimplyTest.meTry HAX on Simplytest me in a few steps without needing to install anythingGo to Simplytest me and pick HAX modulePick 9.x,8.x or 7.xLog in, go to Administration -> Configurat","text":"try on simplytest.me hax simplytest me in a few steps without needing to install anything\ngo and pick module\n\npick 9.x,8.x or 7.x\nlog in, go administration -> configuration content authoring input formats / filters\nmake sure that filter html tags is disabled\n\n\n\n \n cdn all the things\n\n garland...\n\ngetting setup drupal cms\nhax works with 8, 7 way back 6 (mostly prove point). while routines are largely same make you follow directions for your flavor of if it has any branching steps. 8 easiest get require some additional modules going.\ngo project page drupal.org\n\n\nbe aware 9 version does not\n\n web components module does\n\n\ndownload platform found readme.md\n\ndrupal have these files the copythisstuff\n folder module\n so that!\n\n\nenable module\n\nweb too 7\n\n\n\ngo node site, should see tab says \"block editor mode\"\n\nenjoy haxing site!\n\n\nspecial note 7\nin order upload capabilities you'll need download file entity\n\n restws\n\n as well. we've created \"hax common\" feature using features which will help dependencies common sites hax."},{"id":"item01e0f49a-190a-4c8d-ae0e-8","title":"Roadmap","created":1565290387,"location":"welcome/roadmap-1","description":"HAX encompasses many different projectsThis roadmap illustrates all the projects related to HAX and ELMS:LN, which HAX comes from. The little settings gears found throughout illustrate enhancements a","text":"hax encompasses many different projects this roadmap illustrates all the related to and elms:ln, which comes from. little settings gears found throughout illustrate enhancements next steps for in our wheel house.\nas you can see, theres a lot of planned haxeditor haxcms with additional future capabilities elms:ln as result these projects. it's important understand relationships through how innovations flow between them.\nrelationships major pieces\nhax has parts detailed here, so let's look at relationship pieces before getting into roadmap. are part organization is also included details.\nhaxiam, haxcms, three that make up \"hax\" name space, benefit from being built on web components. haxiam server technology while mix front end assets. fully front-end code then requires backend save load pages from.\nbelow an image consolidating information site arrows illustrating innovation. components always building blocks, usually bubbling need either or haxeditor. there, influences improves haxcms. copy inside it sees improvements both platforms. just makes sure copies generated.\nnow foundation dig project roadmaps."},{"id":"item5df45272-f6b9-4f4f-b650-1","title":"Publishing","created":1550643005,"location":"documentation-1/haxcms/publishing","description":"HAXcms requires being published in order to be visible to other people. Working locally or on Desktop or on a server, is akin to you writing a document on your computer. It's not shared with anyone. W","text":"haxcms requires being published in order to be visible other people. working locally or on desktop a server, is akin you writing document your computer. its not shared with anyone. we recommend setup publishing ahead of time save hassle later. setting up publishing\nfrom the site listing\n page, click settings gear top right corner.\nnext you'll see modal that has options for plugging github credentials. don't password and this aspect optional. if do enter password, one api call made behalf from container which will an ssh key pair. allows all future requests publish happen automatically behalf. stored. want set part up, can plug rest git settings, save, then manually files after using ui (see last heading page).\nnpublishing sites / new sites\nwhen share people update website, hitting button inside how this. bottom get started.\ncurrently only provider supported local installation method (or ddev providers). have additional development flexibility.\nunderstanding what's actually happening\n\nwhen hit publish, few things make \"web ready\". general those operations:\nhaxcms takes underlying commits them version control (though they already should be)\n\n\nit pushes these origin repository (likely github)\n\nthen it switches branch from. github, gh-pages\n\n branch, but deviate as needed.\n\nnext deletes symlinks replaces correct references needed leverages \"cdn provider\" specified when super charge end users.\n\nit uses twig\n\n step through correctly rewrite index.html match paths where it's going sent\n\nthen adds sends gh-pages branch.\n\nit does some file clean sets back master next go work everything\n\n\nwhen done, link indicated successful (meaning pushed there). depending host content may take minutes change, though usually within about 2 minutes.\nonce so passed, refresh live address type url site. you've been there previously, probably same theme were there. 5 seconds, message pop indicating \"new available\" clicking refreshing browser) give updated content.\nthis happens because called \"service worker\". enables 100% offline capable ensures traffic data absolutely necessary.\na note non workflows\nyou might to) credentials between repo. that's ok. terminal gui run following site:\n cd haxcms/_sites/yoursite\ngit checkout gh-pages\ngit push master\ngit master\n\nhaxcms sure branches are valid distribution, even wasn't able send their destination."},{"id":"item44cc230b-07db-442a-90cf-6","title":"haxHooks","created":1617802345,"location":"item-44cc230b-07db-442a-90cf-687e2d089a5d","description":"Elements can integrate deeply into HAX state management using what we call \"hax hooks\". By supplying a method on your web component like haxHooks() you are magically able to tap into different li","text":"elements can integrate deeply into hax state management using what we call \"hax hooks\". by supplying a method on your web component like haxhooks()\n you are magically able to tap different life-cycle steps within the editor.\n\nbecause of simplicity and power \n haxhooks\n this may not be an exhaustive list internal code documentation should consulted\n (or open issue ensure document missing hook!). you search lrnwebcomponents monorepo for usage haxhooks\n in order discover additional implementations beyond is pointed below.\n\n blog posts about topic\n\n\n haxhooks(): how supply their own editing experience in now!\n haxhooks: webcomponents that ship ux\n \n\n\ncode example\n\n basic example which each strings youd then implement as async\n callbacks. / await\n allows safely defer element do whatever it wants dom structure callback, without disrupting activation or conversion schema, uses virtualize body sanitation\n  purposes at time save adding new things page.\n \n\n \nhaxhooks() {\n return activeelementchanged: \"haxactiveelementchanged\",\n editmodechanged : \"haxeditmodechanged\",\n inlinecontextmenu: \"haxinlinecontextmenu\",\n gizmoregistration: \"haxgizmoregistration\",\n preprocessnodetocontent \"haxpreprocessnodetocontent\",\n postprocessnodetocontent \"haxpostprocessnodetocontent\",\n progressiveenhancement: \"haxprogressiveenhancement\",\n preprocessinsertcontent \"haxpreprocessinsertcontent\"\n };\n}\n\n gizmoregistration(store)\n\nthe most powerful hook haxhooks. fires whenever read via appstore it's definition loaded use. supplies instance haxstore (written mobx). use object want hax. while seemingly too powerful, here some examples past leverage super good\n\n code-sample\n - code-sample tag inject shortcut logic. if supplied, ```js\n will convert js based code-sample. also hijacks baked support ```\n instead default code\n tag\n \"apps\" wikipedia-query\n github-preview\n supply custom public api endpoints being loaded. way \"media\" menu github wikipedia just including these tags autoloader block appstore.\n translatable haxproperties meme-maker\n twitter-embed\n translations haxproperties. means were edit editor spanish (es), would see fields inputs (es) opposed english (en) text supplied static get haxproperties()\n method.\n \n\n\n activeelementchanged(element, value)\n\nthis runs user activates selects modify node active well (true) inactive (false). used functional aspects prior receiving use-case could preventing behavior clickable link (see: \n ebook-button\n). another possible making pieces shadowroot\n contenteditable\n, only activated (see: meme-maker\n).\n\n\n editmodechanged(value)\n\nthis all nodes hax-body\n when itself changes. now editing, value true\n, go no longer false\n.\n\n inlinecontextmenu(cemenu)\nthis after allow buttons operations in-context hovers above elements. have access (hax-ce-context) add with multiple-choice\n this. quick removing potential answers quickly.\n\n preprocessnodetocontent(node)\nthis right before converted content entire hax-body. happens has triggered event converting from real html saved returned backend. any known data clean up html. taking complex property innerhtml children progressive enhancement purposes.\nprogressiveenhancement(element)\nthis string appended area element. alternative accomplish during but work response. seo purposes.\n\n postprocessnodetocontent(content)\nthis progressiveenhancement hax-save event. been content. useful forcible regex'ing output specific words leak output. video-player\n ensuring there empty arrays required field.\n\n preprocessinsertcontent(detail)\nthis schema element, our virtual node, inserted modification that's node. answer doesn't bleed through page. duplication inserting selecting block."},{"id":"itemc86470aa-0295-4c9d-9f17-4","title":"Presentations","created":1552910817,"location":"welcome/presentations","description":"This is the youtube playlist of all things HAXTheWebThis playlist is updated on a regular basis so make sure to subscribe to the youtube channel for updates. There's also many other playlists relat","text":"this is the youtube playlist of all things haxtheweb\n\nthis updated on a regular basis so make sure to subscribe channel for updates. theres also many other playlists related elms:ln, wcfactory, haxcms and web components in general."},{"id":"item4824986b-1897-568d-fdd9-4","title":"BackdropCMS","created":1548826475,"location":"integrations-1/backdropcms","description":"Getting HAX setup in BackdropCMSSearch for HAX on BackdropCMS.org or from within your Backdrop siteFollow the instructions in the Web components module README for buildingDon't worry, HAX requ","text":"getting hax setup in backdropcms\nsearch for on backdropcms.org\n or from within your backdrop site\nfollow the instructions web components module readme\n for building\ndont worry, requires but comes with files that supply details to install hax\n\nenable and modules\ngo a node site, you should see tab says \"hax mode\"\nenjoy haxing backdropcms site"},{"id":"item7ab2e2fd-622f-4a0f-9967-5","title":"Scavenger Hunt","created":1563970537,"location":"scavenger-hunt-1","description":"Become part of our dynasty franchise **by wearing a cool jerseyWe're building the greatest roster of people ever to HAX the complacency of our industry. Take the HAX scavenger hunt at the next ev","text":"become part of our dynasty franchise **by wearing a cool jersey \n\n\n\nwere building the greatest roster people ever to hax complacency industry. take scavenger hunt at next event join movement!\npast winners rocking their merch from completing hunt!\n@onelittlebecca\n\n\n\n - drupalgovcon '19\n\n\n\n@jproffitt\n\n\n\n '19\n\n\n@natefollmer\n\n\n irl aug '19"},{"id":"item7f3dd690-4c3f-4616-baa5-1","title":"Dev workflows","created":1553349518,"location":"documentation-1/haxcms/theming/dev-workflows","description":"Our development workflow is as follows (for themes)All custom theme work happens in your _config directoryMake my-theme.js, pull everything together, either in this directory or in a wcfactory cat","text":"our development workflow is as follows (for themes) all custom theme work happens in your _config directory\n\nmake my-theme.js, pull everything together, either this directory or a wcfactory\n catalog of elements youve made\nreference you _config/my-custom-elements.js element\nupdate the _config/config.json block that says themes\n to include something like...\n\n \"themes\": {\n \"odl-haxtheme\": \"element\": \"odl-haxtheme\",\n \"path\": \"@myorganization/odl-haxtheme/odl-haxtheme.js\",\n \"name\": \"eberly odl\"\n }\n },\n\nthis tells haxcms ui can now select the (but don't yet, it won't be valid)\nlocal during development\nwe use polymer cli to serve up and on web components locally while have to, it's recommended part wcfactory workflow.\nmake new site ui\n\ngo _sites/mynewsite run polymer --npm --open --entrypoint dist/dev.html\n\n\nadjust url opens only ip address with no path after it\nyou'll see open for local work, which will leveraging any assets referenced node_modules at project root.\nto add / install run yarn (or npm) @what/ever-you-want --save \n, just like would other fe dev\nedit site's site.json manually update point location actively working on\ndevelop away until liking\n\nshipping theme\nto ship theme, you'll need do build routine\nimportant note\nthis currently forks from original source core (because recompile assets). if you're ok cool, know we're trying find ways around involving rollup\n.\ngo root\n\nrun build\n\n\ncopy go site\ndelete symlink replace directory\nnow publish via so long not leverage cdn\n\nthe future\nadmittedly, full component rough. hard maintain built copy modular system without tooling. future we plan having tooling workflows directly into allow streamline creation themes.\ncurrent limitations\nyou can't existing cdns (like webcomponents.psu.edu whatever else out there) are pegged project's source. creating then creates effect want ensure some place host order power site."},{"id":"iteme6daa06e-dfd2-43a4-ade8-0","title":"Life cycle","created":1554496047,"location":"documentation-1/haxcms/life-cycle","description":"This is a general life cycle that happens when HAXcms \"boots up\". When web components are unpacking the contents of what to do it generally will work this way.page load, should it be no-js or a web c","text":"this is a general life cycle that happens when haxcms \"boots up\". web components are unpacking the contents of what to do it generally will work way. page load, should be no-js or component delivered, preflight\nhaxcms-site-builder loads site.json, reads json outline schema and starts bootstrap into theme, items, title, etc\nappends haxcms-editor-builder tag which checks for \"context\"\ncontext established based on global values php, nodejs, beaker, etc\nuses login end point check if theres jwt in user's local data\nwhen finds backend, injects bridge backend\n\nhaxeditor gets injected correct place theme then all unpacks does its thing\n\nevent driven architecture\nhaxcms allows jumping at different core operational steps reacting these changes an event design pattern. means \"fires\" much like javascript code written react can make operation.\nhere example from haxiam implements custom configuration listeners\n// file included has class question\ninclude_once str_replace('_iamconfig/haxcmsconfig.php', '', __file__) . '/system/lib/iam.php';\n// haxcmsconfig.php\n// adds listener haxcms-jwt-get event\n// says pass data question $iam->getjwtuser();\n$haxcms->addeventlistener('haxcms-jwt-get', array($iam, 'getjwtuser'));\n// later additionally code\nclass iam {\n/**\n * callback event: haxcms-jwt-get\n */\n public function getjwtuser(&$token) {\n ($this->enterprise->uservar) $token['user'] = $this->enterprise->uservar;\n }\n }\n}\n// ensures there $iam object\n// also there's instance so our above\n// fires it'll correctly associate code\nglobal $iam;\n$iam new iam();\ncore listeners\ncore listeners influence how constructed. you add your _config/config.php file\nhaxcms-init\n - just after bootstraps initial configuration\nhaxcms-site-metadata\n constructing metadata block top document\nhaxcms-connection-settings\n authorized users, points connecting modifying logic as far where flows.\n\nenterprise integrations sso\nthe following hooks allow supplanting (intentionally) simplistic system. organization. many these\n need specific examples.\nhaxcms-login-test\n didn't built checks. useful enterprise other sso methods access\nhaxcms-validate-user\n same login-test except validate every transaction ensure user name matches decoding jwt\nhaxcms-jwt-get\n we ask jwt. supply token manually via methodology than one\nhaxcms-refresh-token-get\n connection deemed needing refresh, supplies refresh looks"},{"id":"item4bce3546-4d53-4456-8eae-4","title":"HAXcms","created":1550643005,"location":"documentation-1/haxcms","description":"HAXcms, that which powers the site you are currently reading is a powerful \"static site generator\" paradigm. It leverages server technology in order to orchestrate a static site. That way the \"server\"","text":"haxcms, that which powers the site you are currently reading is a powerful \"static generator\" paradigm. it leverages server technology in order to orchestrate static site. way \"server\" only used when needed for user securely develop their content. difference from past generators\nunlike solutions like jekyll\n\n, haxcms anyone publish website, not just those understand command line. intended be installed and then allow users entirely use ui create, manage micro-sites.\nvisualization"},{"id":"itemcdd303d0-4490-4433-94fa-0","title":"Internationalization - i18n","created":1617805490,"location":"item-cdd303d0-4490-4433-94fa-0e78cf849e80","description":"We've created a way to internationalize ANY web component you create. Because this is a complex topic, and we seek to empower anyone, anywhere to work with web components; i18n is a critical piece of ","text":"weve created a way to internationalize any web component you create. because this is complex topic, and we seek empower anyone, anywhere work with components; i18n critical piece of accessibility improving knowledge access on the web. doing so without requiring framework driven approach, or even knowing how our element will be used in production, complicated series decisions. blog details these decisions\ni18nmixin\n\n \n install mixin via yarn npm: add @lrnwebcomponents/i18n-manager\n create folder your called /locales\n file my-element.es.json for spanish translation element. japanese would my-element.ja.json example.\n \n\n import { i18nmixin } from \"@lrnwebcomponents/i18n-manager/lib/i18nmixin.js\";\nclass myelement extends i18nmixin(htmlelement) {\n constructor() this.t = stuff: \"stuff\"\n };\n this.registerlocalization({\n context: this,\n basepath: import.meta.url,\n locales: [\"es\", \"ja\"],\n });\n connectedcallback() this.render();\n }\n render() this.innerhtml `${this.t.stuff}`;\n }\n}\n\nthis invokes dependency manager which might not want have if do similar approach but dependencies, just feed custom event manager. you'll still use convention translatable text, here's can invoke needed\n\n window.dispatchevent(\n new customevent(\"i18n-manager-register-element\", detail: namespace: \"my-element.haxproperties\",\n localespath: decodeuricomponent(import.meta.url) + \"/../locales\",\n [\"es\"],\n },\n })\n );\n\nusing vanilla need /locales directory same naming convention. simplifies integration bit as well timing what it's initiated registration method within that's going arrive hax/haxcms property make that isn't using hax at all."},{"id":"item52727dcf-a7d5-90e9-c459-a","title":"HAX Element Schema","created":1548826475,"location":"documentation-1/hax-development/hax-element-schema","description":"","text":"example of hax element schema json object. its a pretty simple abstraction html elements that helps with packaging and sanitization. h2 tag (core html)\n {\n\"tag\": \"h2\",\n\"properties\": {},\n\"content\": \"introduction to elms: learning network\"\n}\n\np \"p\",\n\"properties\": \"what is network? how it fundamentally different from other technologies? why your reading this when it's text you've just added see make really solid introduction new unit instruction? let's keep find out!\"\n}\n\nvideo-player (web component)\n \"video-player\",\n\"properties\": {\n\"style\": \"width: 75%; margin: 0px auto; display: block;\",\n\"source\": \"https://www.youtube.com/watch?v=pklpq4ufo64\",\n\"src\": \"https://www.youtube-nocookie.com/embed/pklpq4ufo64?showinfo=0&controls=1&rel=0\",\n\"iframed\": true,\n\"sandboxed\": false,\n\"width\": \"560\",\n\"height\": \"315\",\n\"responsive\": true,\n\"caption\": elms:ln? any educational technology that's ever existed? what sustainable innovation? so ...\",\n\"secondarycolor\": \"#fff9c4\",\n\"textcolor\": \"#000000\",\n\"secondarycolorclass\": \"yellow lighten-4\",\n\"textcolorclass\": \"black-text\",\n\"ytnocookie\": true,\n\"ytsuggested\": false,\n\"ytcontrols\": true,\n\"yttitle\": false,\n\"vimeotitle\": false,\n\"vimeobyline\": false,\n\"vimeoportrait\": false,\n\"videocolor\": \"ff031d\",\n\"resource\": \"#86bfd28d-8b57-a3b9-b2e5\",\n\"prefix\": \"oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org \"\n},\n\"content\": \"\"\n}"},{"id":"item5dede24a-2de7-4fae-a00b-3","title":"I have issues","created":1553556295,"location":"welcome/i-have-issues","description":"You have a problem or would like to contribute to anything in our universe? That's awesome! All issues, feature requests and general thumbs up should happen in our issue queue on github: https://gith","text":"you have a problem or would like to contribute anything in our universe? thats awesome! all issues, feature requests and general thumbs up should happen issue queue on github: https://github.com/elmsln/issues/issues"},{"id":"item677468f6-7bff-4bb6-bd2a-1","title":"ClassicPress","created":1565279009,"location":"integrations-1/classicpress-1","description":"ClassicPress is a popular fork of WordPress that's even easier to get HAX up and running then it is in the original!Get the HAX plugin from the wordpress registryGo to edit / create a page/post ","text":"classicpress is a popular fork of wordpress thats even easier to get hax up and running then it in the original!\n\nget plugin\n from registry\ngo edit / create page/post you are haxing\n\ninstallation video\nthis shows installing manually if can't from store!"},{"id":"itemc7500902-9aed-4117-8949-a","title":"Troubleshooting","created":1553555764,"location":"documentation-1/haxcms/troubleshooting","description":"These are some common issues / resolutions in HAXcms related to installation, publishing, etc.I installed HAXcms and forgot my passwordYour username and password can be found in _config/config.php o","text":"these are some common issues / resolutions in haxcms related to installation, publishing, etc. i installed and forgot my password\nyour username password can be found _config/config.php on the server (assuming local development)\ni clicked login nothing happened now im locked out.\nclear your browser cache. a cookie is set that might invalid.\n\nopen new try again\n\ni publish happened\npublishing take up minute or so at times since it's creating commit, rewriting files then front end waiting push github before it triggers successful response.\nif did fail publish, you not have git setup. click gear icon dashboard (site listing) ensure you've setup integration correctly.\n\nrealize everything just file our json outline schema very easy read. if there's an issue with something check _sites/mysite/site.json for _config/config.json. all settings variables cascade this way. stored globally, replicated locally allow them pealed off more easily imported exported into other setups."},{"id":"item4de60a5f-98ab-a602-edfc-0","title":"HAX app store","created":1548826475,"location":"documentation-1/hax-development/hax-app-store","description":"","text":"the app store specification is what provides hax with its raw data integration capabilities. it's a block of json that tells haxeditor rules by which it to play by. complete example available in h-a-x tag's demo \n\n\n\n but we'll outline different parts this supports as well one detail.\nkeys and they mean\n\napps\n\n\n\n - source either upload or search. apps supply definition how connect remote data, search it, things it.\n\n\nblox\n\n\n\n elements. blox are series elements wrapped inside plate element. can be modified pieces fundamentally entire thing piece. moved up down an group.\n\n\nstax\n\n\n\n stack html added into dom all at once. think these like a \n\n\nautoloader\n\n\n\n automatically loaded when setup."},{"id":"item897a9839-4ca3-a336-4795-a","title":"GravCMS","created":1548826475,"location":"integrations-1/gravcms","description":"There's two plugins needed to run HAX on GravCMS - The web components and HAX plugins.Web components plugin - provides the build routine and installation instructionsHAX plugin - editor capab","text":"theres two plugins needed to run hax on gravcms - the web components and plugins. plugin\n\n - provides build routine installation instructions\n\nhax editor capabilities\n\n\nenable these then will show up when you go edit / add a page. beware there can be conflicts between markdown parsing capabilities of grav so may need disable parser pages that use hax."},{"id":"itema52fb685-0a2f-4bc0-8e62-4","title":"Theming","created":1550643005,"location":"documentation-1/haxcms/theming","description":"There are multiple ways to \"theme\" in HAXcms that align with the skillsets of the person doing the theme development. Know web components? Cool. Know basic CSS and HTML? Cool. Want to build something ","text":"there are multiple ways to \"theme\" in haxcms that align with the skillsets of person doing theme development. know web components? cool. basic css and html? want build something complete from ground up? go for it. weve got a robust templating engine unleash your creativity. we've also written wcfactory\n\n\n\n\n tooling order improve development management component libraries at scale (see lrnwebcomponents\n\n\n\n\n our element portfolio). this isn't required but if you fancy yourself \"modern front end developer\" might be you.\nwatch video\nthese some deep dives into layer. they great seeing what's possible, how we about making new themes. now store state works internally try always keep away designers.\n\n\n\n\n\n\nhere's source code learn-two-theme\n\n\n\n (which viewing currently) as an initial example what looks like.\n /**\n * copyright 2019 pennsylvania university\n @license apache-2.0, see license.md full text.\n */\nimport { html, polymerelement } \"@polymer/polymer/polymer-element.js\";\nimport haxcmstheme \"@lrnwebcomponents/haxcms-elements/lib/core/haxcmsthemewiring.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-breadcrumb.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/active-item/site-active-title.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-title.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-rss-button.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/site/site-print-button.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-menu.js\";\nimport \"@lrnwebcomponents/haxcms-elements/lib/ui-components/navigation/site-menu-button.js\";\nimport \"@lrnwebcomponents/simple-colors/simple-colors.js\";\nimport \"@polymer/app-layout/app-drawer/app-drawer.js\";\nimport \"@polymer/app-layout/app-drawer-layout/app-drawer-layout.js\";\nimport \"@polymer/paper-icon-button/paper-icon-button.js\";\n\n/**\n `learn-two-theme`\n `learn2 haxcms`\n *\n @microcopy - language worth noting:\n -\n @customelement\n @polymer\n @demo demo/index.html\n */\nclass learntwotheme extends haxcmstheme(polymerelement) {\n // render function\n static get template() return html`\n <style>\n :host display: block;\n font-family: \"muli\", \"helvetica\", \"tahoma\", \"geneva\", \"arial\",\n sans-serif;\n letter-spacing: -0.03rem;\n font-weight: 400;\n background: #fafafa;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 \"montserrat\", text-rendering: optimizelegibility;\n line-height: 150%;\n 0;\n :host([hidden]) none;\n :host([edit-mode]) #slot #contentcontainer padding: 48px 96px;\n .header #747474;\n color: text-align: center;\n 0rem 1rem 2rem 1rem;\n site-active-title --site-active-title-heading: font-size: 52px;\n -3px;\n 78px;\n margin-bottom: 27.2px;\n margin-top: 13.6px;\n 100;\n site-title position: relative;\n overflow: hidden;\n --site-title-link: inline-block;\n text-decoration: --site-title-heading: 28px;\n margin: site-menu background-color: #383f45;\n #ffffff;\n scroll;\n max-height: calc(100vh 200px);\n --site-menu-active-color: --site-menu: --site-menu-container: #2d3237;\n --site-menu-item-active-item: site-menu::-webkit-scrollbar-track -webkit-box-shadow: inset 0 4px rgba(56, 63, 69, 0.9);\n border-radius: site-menu::-webkit-scrollbar width: 2px;\n site-menu::-webkit-scrollbar-thumb 1px;\n app-drawer-layout min-height: 100vh;\n -moz-available;\n -webkit-fill-available;\n fill-available;\n --app-drawer-width: 300px;\n --app-drawer-scrim-background: rgba(80, 80, 0.8);\n --app-drawer-content-container: .rss-buttons justify-content: space-evenly;\n flex;\n site-print-button --site-print-button-button: white;\n app-drawer box-shadow: 6px -3px var(--haxcms-color, black);\n app-drawer-layout[narrow] 16px;\n #menubutton,\n #menubutton2 #menubutton absolute;\n z-index: 1;\n site-menu-button fixed;\n top: bottom: left: --site-menu-button-icon: 64px;\n height: --site-menu-button-button: rgba(0, 0, 0);\n transition: 0.4s all ease-in-out;\n transition-delay: 0.2s;\n opacity: 0.8;\n -webkit-transition: -moz-transition: -ms-transition: -o-transition: site-menu-button:not([disabled]):hover,\n site-menu-button:not([disabled]):active,\n site-menu-button:not([disabled]):focus 0.1);\n 160px);\n unset;\n transparent !important;\n site-menu-button[type=\"next\"] right: site-menu-button[type=\"prev\"] :host([opened]) site-menu-button[type=\"prev\"],\n :host([opened])\n app-drawer-layout[narrow]\n </style>\n \n html,\n body <style></style>\n `;\n }\n\n properties available custom data binding\n properties() {};\n tag name make it easier obtain directly.\n @notice function must here operate correctly\n */\n tag() \"learn-two-theme\";\n mix opened status\n let props = super.properties;\n props.opened type: boolean,\n reflecttoattribute: true\n };\n props;\n toggledrawer(e) this.$.drawer.toggle();\n }\n}\nwindow.customelements.define(learntwotheme.tag, learntwotheme);\nexport };"},{"id":"itemc5e61b84-e88a-5a48-29c6-5","title":"Creating new ones!","created":1548828434,"location":"integrations-1/creating-new-ones","description":"The main piece to our integrations is wrapped up in something we call \"The magic script\". The magic script is a standard way of dynamically discovering and importing the definitions of web components ","text":"the main piece to our integrations is wrapped up in something we call \"the magic script\". script a standard way of dynamically discovering and importing definitions web components on fly. leverage this approach all hax platform because it simplifies initial question how teach cms / app about components. theres an entire dev.to series integration\n methodology if you'd like more detail why do or works. integration stand alone repo you can use for custom builds, found unbundled repo\n. below what recommended want cdn wide array elements already include builds.\nwindow.__appcdn=\"https://cdn.webcomponents.psu.edu/cdn/\";\n<script></script>\nthis will load off penn state automatically hydrate discovered page, including h-a-x family tags.\n\nhax things\n has every support as well some examples angular other frameworks (see folder that repo). common example see part wordpress plugin (code below)\nwordpress example\n(function ($) {\n\t$(document).ready(function () {\n // press\n var haxthepress = document.createelement('wysiwyg-hax');\n temp document.createelement('template');\n target tinymce area\n const content document.queryselector('textarea#content');\n replicate was providing light dom\n haxthepress.fieldclass 'wp-editor-area';\n haxthepress.fieldname 'content';\n haxthepress.fieldid haxthepress.opendefault true;\n haxthepress.elementalign 'left';\n haxthepress.savebuttonselector document.queryselector('input[type=\"submit\"]#publish');\n (window.haxthepressconnector) haxthepress.appstoreconnection window.haxthepressconnector;\n }\n set template tag previously textarea\n temp.innerhtml content.value;\n append into wysiwyg\n haxthepress.appendchild(temp.clonenode(true));\n insert field exactly where was\n content.parentnode.insertbefore(haxthepress, content);\n web\n content.parentnode.removechild(content);\n\t});\n})(jquery);\nin able integrate with wysiwyg-hax by using jquery correctly time when loaded dom ready, then replacing \"content\" area (a textarea id=\"content\") at run light-dom capable tag.\ngeneral advisement\nhaxeditor keeps so much functionality front-end there's really very little tying to..well.. anything. result, easy systems currently have wysiwyg capabilities.\nall effectively boil down four things\nend point content\nend save appstore specification\nend upload files (optional)\n\ncontent filtering\nbecause are valid html tags your system may accept them saved database but also be doing filtering xss sanitation prior storage. process storage (and should) strips out mark up, you'll need add white-listing capabilities order ensure component pass through should."}]
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
index c37bf33..65b8272 100644
--- a/manifest.json
+++ b/manifest.json
@@ -3,12 +3,6 @@
"short_name": "haxtheweb",
"description": "Project home and documentation for all things HAX",
"icons": [
- {
- "src": "files/haxcms-managed/36x36-3450183.png",
- "sizes": "36x36",
- "type": "image\/png",
- "density": "0.75"
- },
{
"src": "files/haxcms-managed/48x48-3450183.png",
"sizes": "48x48",
@@ -37,19 +31,35 @@
"src": "files/haxcms-managed/192x192-3450183.png",
"sizes": "192x192",
"type": "image\/png",
+ "density": "4.0"
+ },
+ {
+ "src": "files/haxcms-managed/256x256-3450183.png",
+ "sizes": "256x256",
+ "type": "image\/png",
"density": "4.0",
- "purpose": "any maskable"
+ "purpose": "any"
},
{
"src": "files/haxcms-managed/512x512-3450183.png",
"sizes": "512x512",
"type": "image\/png",
- "density": "4.0"
+ "density": "4.0",
+ "purpose": "maskable"
}
],
- "scope": "/",
- "start_url": "/",
+ "scope": "/haxtheweb/",
+ "start_url": "/haxtheweb/",
"display": "standalone",
"theme_color": "#009dc7",
- "background_color": "#009dc7"
+ "background_color": "#009dc7",
+ "dir": "auto",
+ "lang": "",
+ "orientation": "any",
+ "display_override": [
+ "window-controls-overlay"
+ ],
+ "categories": [
+ "education"
+ ]
}
\ No newline at end of file
diff --git a/offline.html b/offline.html
new file mode 100644
index 0000000..ab68bc4
--- /dev/null
+++ b/offline.html
@@ -0,0 +1,11 @@
+
+
+
+
+ Offline ;-(
+
+
+ You appear to be offline
+
+
+
\ No newline at end of file
diff --git a/package.json b/package.json
index ef59e0d..68e0f6d 100644
--- a/package.json
+++ b/package.json
@@ -1,133 +1,20 @@
{
"name": "haxtheweb",
- "version": "2.0.9",
+ "version": "9.0.5",
"description": "Project home and documentation for all things HAX",
"main": "index.html",
- "repository": {
- "type": "git",
- "url": "git@github.com/elmsln/haxtheweb.git"
- },
"author": {
"name": "btopro"
},
"license": "Apache-2.0",
- "dependencies": {
- "@lrnwebcomponents/a11y-gif-player": "^2.0.1",
- "@lrnwebcomponents/aframe-player": "^2.0.1",
- "@lrnwebcomponents/app-datepicker": "^2.0.1",
- "@lrnwebcomponents/citation-element": "^2.0.1",
- "@lrnwebcomponents/code-editor": "^2.0.1",
- "@lrnwebcomponents/deduping-fix": "^2.0.1",
- "@lrnwebcomponents/dl-behavior": "^2.0.1",
- "@lrnwebcomponents/dropdown-select": "^2.0.1",
- "@lrnwebcomponents/eco-json-schema-form": "^2.0.1",
- "@lrnwebcomponents/elmsln-loading": "^2.0.1",
- "@lrnwebcomponents/grafitto-filter": "^2.0.1",
- "@lrnwebcomponents/grid-plate": "^2.0.1",
- "@lrnwebcomponents/hax-body": "^2.0.1",
- "@lrnwebcomponents/hax-body-behaviors": "^2.0.1",
- "@lrnwebcomponents/haxcms-elements": "^2.0.1",
- "@lrnwebcomponents/hero-banner": "^2.0.1",
- "@lrnwebcomponents/image-compare-slider": "^2.0.1",
- "@lrnwebcomponents/license-element": "^2.0.1",
- "@lrnwebcomponents/lrn-aside": "^2.0.1",
-
- "@lrnwebcomponents/lrn-icons": "^2.0.1",
- "@lrnwebcomponents/lrn-math": "^2.0.1",
- "@lrnwebcomponents/lrn-table": "^2.0.1",
- "@lrnwebcomponents/lrn-vocab": "^2.0.1",
- "@lrnwebcomponents/lrndesign-blockquote": "^2.0.1",
- "@lrnwebcomponents/magazine-cover": "^2.0.1",
- "@lrnwebcomponents/materializecss-styles": "^2.0.1",
- "@lrnwebcomponents/md-extra-icons": "^2.0.1",
- "@lrnwebcomponents/media-behaviors": "^2.0.1",
- "@lrnwebcomponents/media-image": "^2.0.1",
- "@lrnwebcomponents/meme-maker": "^2.0.1",
- "@lrnwebcomponents/multiple-choice": "^2.0.1",
- "@lrnwebcomponents/oer-schema": "^2.0.1",
- "@lrnwebcomponents/outline-player": "^2.0.1",
- "@lrnwebcomponents/paper-icon-picker": "^2.0.1",
- "@lrnwebcomponents/paper-input-flagged": "^2.0.1",
- "@lrnwebcomponents/pdf-element": "^2.0.1",
- "@lrnwebcomponents/person-testimonial": "^2.0.1",
- "@lrnwebcomponents/place-holder": "^2.0.1",
- "@lrnwebcomponents/q-r": "^2.0.1",
- "@lrnwebcomponents/responsive-grid": "^2.0.1",
- "@lrnwebcomponents/schema-behaviors": "^2.0.1",
- "@lrnwebcomponents/self-check": "^2.0.1",
- "@lrnwebcomponents/silly-hax-game": "^2.0.1",
- "@lrnwebcomponents/simple-blog": "^2.0.1",
- "@lrnwebcomponents/simple-colors": "^2.0.1",
- "@lrnwebcomponents/simple-concept-network": "^2.0.1",
- "@lrnwebcomponents/stop-note": "^2.0.1",
- "@lrnwebcomponents/task-list": "^2.0.1",
- "@lrnwebcomponents/video-player": "^2.0.1",
- "@lrnwebcomponents/wikipedia-query": "^2.0.1",
- "@polymer/app-localize-behavior": "^3.0.1",
- "@polymer/iron-a11y-keys": "^3.0.0",
- "@polymer/iron-dropdown": "^3.0.0",
- "@polymer/iron-flex-layout": "^3.0.0",
- "@polymer/iron-image": "^3.0.0",
- "@polymer/iron-list": "^3.0.0",
- "@polymer/iron-menu-behavior": "^3.0.0",
- "@polymer/iron-pages": "^3.0.1",
- "@polymer/neon-animation": "^3.0.1",
- "@polymer/paper-button": "^3.0.1",
- "@polymer/paper-card": "^3.0.0",
- "@polymer/paper-checkbox": "^3.0.0",
- "@polymer/paper-dialog": "^3.0.1",
- "@polymer/paper-dialog-scrollable": "^3.0.0",
- "@polymer/paper-dropdown-menu": "^3.0.0",
- "@polymer/paper-icon-button": "^3.0.0",
- "@polymer/paper-input": "^3.0.0",
- "@polymer/paper-item": "^3.0.0",
- "@polymer/paper-listbox": "^3.0.0",
- "@polymer/paper-material": "^3.0.1",
- "@polymer/paper-menu-button": "^3.0.0",
- "@polymer/paper-slider": "^3.0.0",
- "@polymer/paper-styles": "^3.0.0",
- "@polymer/paper-tabs": "^3.0.0",
- "@polymer/paper-toast": "^3.0.0",
- "@polymer/paper-toggle-button": "^3.0.0",
- "@polymer/paper-tooltip": "^3.0.0",
- "@polymer/polymer": "^3.1.0",
- "@vaadin/vaadin-split-layout": "^4.1.0",
- "@vaadin/vaadin-upload": "^4.2.1",
- "@webcomponents/webcomponentsjs": "2.2.10",
- "web-animations-js": "^2.3.1"
- },
"private": false,
"publishConfig": {
"access": "public"
},
- "resolutions": {
- "object-assign": "4.1.1",
- "commander": "2.19.0",
- "readable-stream": "1.1.14",
- "isarray": "1.0.0",
- "source-map": "0.5.7",
- "kind-of": "6.0.2",
- "is-number": "4.0.0",
- "once": "1.4.0",
- "minimist": "1.2.0",
- "ajv": "6.5.5",
- "fast-deep-equal": "2.0.1",
- "json-schema-traverse": "0.4.1",
- "@polymer/app-layout": "3.0.2"
- },
- "devDependencies": {
- "@prettier/plugin-php": "^0.11.0",
- "prettier": "^1.16.4",
- "gulp": "^4.0.2",
- "gulp-terser": "^1.2.0",
- "rollup-plugin-terser": "5.2.0"
- },
"scripts": {
- "lint": "prettier --check 'system/**/*.php' '*.{html,js,php,yml}'",
- "format": "prettier --write 'system/**/*.php' '*.{html,js,php,yml}'",
- "terser": "gulp",
- "start": "yarn run dev",
- "dev": "polymer serve --open --entrypoint dist/dev.html --allow-origin --open-path=/",
- "dev-theme": "cd custom && yarn start"
+ "start": "npm run dev",
+ "ghpages:build": "rm dist && rm assets/babel* && rm build && rm node_modules && rm wc-registry.json",
+ "dev": "npx @haxtheweb/haxcms-nodejs",
+ "dev-theme": "cd custom && npm start"
}
-}
+}
\ No newline at end of file
diff --git a/pages/documentation-1/hax-development/index.html b/pages/documentation-1/hax-development/index.html
index 81a9f7f..19bb4b9 100644
--- a/pages/documentation-1/hax-development/index.html
+++ b/pages/documentation-1/hax-development/index.html
@@ -1,3 +1,23 @@
+
Hax Development Quick Start
+If you want to work on individual components inside hax you need to link the node_modules folders.
+
+
+ cd HAXcms/
+ # link node_modules directory to your clone of lrnwebcomponents
+ ln -s ../lrnwebcomponents/node_modules/
+
+
+If you want to see your element changes in a haxcms site we need to setup some sym links to the haxcms directory.
+
+
+ cd sites/my-site/
+ # link dist, build, and node_modules
+ ln -s ../../dist/
+ ln -s ../../build/
+ ln -s ../../node_modules/
+
+
+
Include HAX in your project
The developers docs will lay out the many specifications that make HAX possible including core concepts, different schema's it leverages ad how to define app store spec in order to take integrations further.
# get the code
diff --git a/pages/documentation-1/hax-development/wcfactory-tooling/index.html b/pages/documentation-1/hax-development/wcfactory-tooling/index.html
index bce69b1..056a5d8 100644
--- a/pages/documentation-1/hax-development/wcfactory-tooling/index.html
+++ b/pages/documentation-1/hax-development/wcfactory-tooling/index.html
@@ -1,4 +1,10 @@
We made tooling to publish web components with ease and in any library. It's called WCFactory and while not required, it's the tooling we use for managing HAX and the many related elements in our library.
A factory that churns out web components, library agnostic with a unified development, testing, and build to production pipeline. We want to eliminate the barriers to web component adoption because as of Oct 23rd, 89.18% of all traffic can handle web components with no polyfills. Get it on npm
or yarn
and get publishing!
Have PHP? well then you can setup HAXcms pretty quick. Just download HAXcms and navigate to its directory in a browser. It'll attempt to automatically install (which is to create two basic folders). If all goes well you'll see some ASCii art telling you what your password is. HAXcms seeks to be a 0 config installation so if anything didn't work or make sense, just drop us a line in the issue queues.
+
+
Quick Start Installation
+
Note: This installs ddev and docker on Linux / Mac users if possible and needed. For Windows users
+ you will need to install Docker Desktop
+ (
+ https://docs.docker.com/docker-for-windows/install/
+ ) and one of the following ddev, lando, or docksal as well.
+
Just run this one command and you'll be HAXing the web in no time! This will step you through prompts (which can be scripted via arguments) to feed the backend what it needs to create the few configuration files it uses to load.
# HAX the web and answer the prompts
diff --git a/pages/documentation-1/index.html b/pages/documentation-1/index.html
index a2cb6c4..04c59f5 100644
--- a/pages/documentation-1/index.html
+++ b/pages/documentation-1/index.html
@@ -1,10 +1,26 @@
+
HAX may seem complex, but it's built on a series of standards that will never
break. As a result of the complexity of these standards, there are things you should know prior to digging into HAXeditor core or any of its related Solutions
-
Watch us build!
-
Many members of the core development team participate in a show called HAX camp Uncode
-.
+
Storybook / styles / element listing
+
Want to get started with using our various elements? Then check out our robust design storybook
+ full of elements, examples, and API details.
-
+
+
Many members of the core development team participate in a show called HAX camp Uncode
+.
+
Blogging / social
+
Here's some social media and blogs to follow for additional writing, tutorials and videos about HAX.
Yes. Web components effectively turn the HTML of a site into a consistent API. HAXeditor
+
+
Are web components ready for prime time?
+
Yes. Web components effectively turn the HTML of a site into a consistent API. HAXeditor
leverages this approach and standardizes its usage in order to supply an incredible amount of functionality in the browser. We do what the vast majority of CMS provide prior to interfacing with a server. Just HTML files and a h-a-x
tag to understand how to modify content.
-
What's Browser support like?
+
What's Browser support like?
Web components
can be compiled to support IE11 and work in all major browsers natively
HAXeditor
- is supported by IE 11
- and all major browsers, though we mostly test "evergreen" browsers.
+ supports all major browsers, though we mostly test "evergreen" browsers.
HAXcms
- support is broad but a bit fragmented to optimize the experience per each device. From lowest to highest quality (numbers based on global traffic data in aggregate
-, last updated Aug 2020
+ support is broad but a bit fragmented to optimize the experience per each device. From lowest to highest quality (numbers based on global traffic data in aggregate
+, last updated Aug 2020
)
IE (11) / Safari (9.1) / older - no JS / frame based site
(~ 1.8%) ES5 / fallback text
No. HAX is written such that the Appstore Specification
is defining the elements that are available in this site and other demos. Leveraging the autoloader
piece of the spec, you can tell HAX which tags to load. The web component definitions and schema can be kept separate as desired (useful in CMS with editorial workflows / permissions scenarios).
-
Do these elements require HAX to operate?
+
Do these elements require HAX to operate?
No! HAX modifies HTML inside of itself and then exports back to HTML. This means that as long as the web components on your site have definitions, HAX no longer is required to render them!
HAX is effectively writing the same HTML you could have by hand. Web components help make it semantic but also ensure that functionality lives with "the platform"; in this case, the platform being the browser. So long as the definitions of the component are in scope of the page, the element will unpack correctly HAX or otherwise.
-
How does this compare to the WordPress Gutenberg plugin?
+
How does this compare to the WordPress Gutenberg plugin?
In terms of mission and what they attempt to provide, a click and build website tonight, no-or-minimal-code solution for the masses... they are the same. They both seek to reduce barriers to entry in web expression. HAX takes some critical differences in philosophy of design to Gutenberg both in technical implementation and goals for the open web.
HAX seeks to improve web publishing for all systems, HAXcms or otherwise. HAXcms (which this site is constructed in) is but a tiny fraction of the web and we want to empower anyone to improve self expression. We want to improve privacy, self sovereignty, and the individuality of all peoples on the web. HAX seeks to eliminate technical barriers to production, integration and delivery of material on the internet; all of it, not just the expensive CMS part of it. We want to hax-the-web, hence this domain name.
Some larger points of different are highlighted below
@@ -49,7 +49,7 @@
How does this compare to th
Gutenberg is written in React, effectively requiring all plugins and block components be written in React. HAX is written in Web components leveraging a mix of "VanillaJS", LitElement and PolymerElement constructed elements. You can use any web component compatible library
in order to produce elements for HAX. While not limited to, here are some popular examples that could natively talk to HAX:
-
VanillaJS following the web component specification
+
VanillaJS following the web component specification
HAX is the brain child of the ELMS:LN team at Pennsylvania State University
. HAX is the authoring solution originally created to power ELMS:LN
and other instructional innovations and was quickly realized for its potential to transform web publishing.
Michael Collins (@_mike_collins
diff --git a/pages/welcome/index.html b/pages/welcome/index.html
index cc4c35c..33b9752 100644
--- a/pages/welcome/index.html
+++ b/pages/welcome/index.html
@@ -1,25 +1,24 @@
-
We're on a mission to empower the next billion creators to share their voice with the world and in doing so, create a less toxic web. Regardless of ability,
- platform,
+
+
We're on a mission to empower the next billion creators to share their voice with the world and in doing so, create a less toxic web. Regardless offfff ability,
+ platform,tribe
- or income
+ or income
.
Will you help us #HAXTheWeb
and in doing so, HAX society?
-
Then keep reading; we Got This!
-
Live demo
-
Seeing is believing! Thanks to Penn State College of Arts & Architecture for sponsoring this demo!
-
+
# HAX editor stand alone for use in apps
+npm install --save @lrnwebcomponents/h-a-x
yarn add @lrnwebcomponents/h-a-x
+pnpm add @lrnwebcomponents/h-a-x
# or Integrate with a textarea like older wysiwyg editors
-yarn add @lrnwebcomponents/wysiwyg-hax
-
H
-eadless A
-uthoring eX
-perience (HAX) is a next generation block editor
- that works anywhere via web components
-!
-
What is this?
-
+
+
HAX works with web component based design assets so you are never tied to HAX. This keeps your design pure
and without adding platform lock-in as content produced by HAX is semantic HTML. Want the video player above this? Then just run this:
-# the video-player tag works with HAX but works ANYWHERE regardless of it
+# the video-player tag works with HAX but works ANYWHERE regardless of it
yarn add @lrnwebcomponents/video-player
-
Get involved!
+
Get involved!
Join us on our slack channel
and get involved in all things HAX and web components. HAX is an open community of people who love the open web across all platforms.
-
Who's involved
-
HAX is the brainchild of Bryan Ollendyke, Michael Potter, Nikki Massaro Kaufman and a chorus of contributors. We've had contributions from:
-
Arizona State University (Drupal 8 plugin), The National Archives (UX Audit, Drupal 8 plugin)
-
Penn State Libraries (HAX11ty)
+
Who's involved
+
HAX is the brainchild of Bryan Ollendyke, Michael Potter, Nikki Massaro Kaufman, Charles Lavera and a chorus of contributors. We've had contributions from:
+
Arizona State University (Drupal 8 plugin)
+
The National Archives (UX Audit, Drupal 8 plugin)
+
Penn State Libraries (HAX11ty)
Penn State Eberly College of Science (core contributor / maintainers)
Penn State Arts and Architecture (core contributors / maintainers)
diff --git a/polymer.json b/polymer.json
index a7e9da4..1525167 100644
--- a/polymer.json
+++ b/polymer.json
@@ -2,68 +2,118 @@
"entrypoint": "dist/build.html",
"extraDependencies": [
"manifest.json",
- "node_modules/@lrnwebcomponents/*/*.js",
- "node_modules/@lrnwebcomponents/*/lib/*",
- "node_modules/@lrnwebcomponents/*/lib/*/*",
+ "node_modules/@polymer/app-layout/*/*.js",
+ "node_modules/@polymer/**/*.js",
+ "node_modules/@polymer/marked-element/node_modules/marked/lib/marked.js",
+ "node_modules/@google/model-viewer/dist/model-viewer.js",
+ "node_modules/@vowo/chart-elements/*.js",
+ "node_modules/intl-messageformat/src/*.js",
+ "node_modules/intl-messageformat-parser/src/*.js",
+ "node_modules/@material/*/*.js",
+ "node_modules/tslib/tslib.es6.js",
+ "node_modules/web-dialog/*.js",
+ "node_modules/tslib/tslib.js",
+ "node_modules/@lit-labs/motion/*.js",
+ "node_modules/@lit-labs/motion/*.*.map",
+ "node_modules/@github/time-elements/dist/*.js",
+ "node_modules/@haxtheweb/*/*.js",
+ "node_modules/@haxtheweb/app-hax/lib/v1/*",
+ "node_modules/@haxtheweb/*/lib/*",
+ "node_modules/@haxtheweb/*/lib/**",
+ "node_modules/@haxtheweb/*/locales/*.json",
+ "node_modules/@haxtheweb/haxcms-elements/package.json",
+ "node_modules/@haxtheweb/haxcms-elements/**",
+ "node_modules/@haxtheweb/*/lib/*/*.js",
+ "node_modules/@haxtheweb/*/lib/*/*",
+ "node_modules/@haxtheweb/*/lib/*/*/*.js",
+ "node_modules/lit/*.js",
+ "node_modules/lit/directives/*.js",
+ "node_modules/lit/decorators/*.js",
+ "node_modules/mobx/dist/mobx.esm.js",
"node_modules/lit-html/*.*.map",
- "node_modules/lit-html/lib/*.*.map",
+ "node_modules/lit-html/*.js",
+ "node_modules/lit-html/*/*.*.map",
+ "node_modules/lit-html/*/*.js",
"node_modules/lit-element/lit-element.js",
"node_modules/lit-element/lib/*.*.map",
+ "node_modules/lit-element/node_modules/lit-html/*.*.map",
+ "node_modules/lit-element/node_modules/lit-html/*.js",
+ "node_modules/lit-element/node_modules/lit-html/*/*.*.map",
+ "node_modules/lit-element/node_modules/lit-html/*/*.js",
"node_modules/lit-element/*.*.map",
- "node_modules/@polymer/app-layout/*/*.js",
"node_modules/@vaadin/**",
- "node_modules/fetch-ie8/fetch.js",
- "node_modules/promise-polyfill/dist/polyfill.min.js",
+ "node_modules/vmsg/*",
+ "node_modules/web-social-share/dist/esm/**",
"node_modules/web-animations-js/*.map",
"node_modules/web-animations-js/*.js",
- "node_modules/@polymer/marked-element/node_modules/marked/lib/marked.js",
- "node_modules/@lrnwebcomponents/a11y-media-player/lib/screenfull/dist/screenfull.js",
- "node_modules/@lrnwebcomponents/img-pan-zoom/lib/openseadragon/build/openseadragon/openseadragon.js",
- "node_modules/@lrnwebcomponents/elmsln-apps/lib/*/*.js",
+ "node_modules/flag-icon-css/flags/*/*.svg",
+ "node_modules/@haxtheweb/*/lib/screenfull/dist/screenfull.js",
+ "node_modules/lit-element-router/utility/router-utility.js",
+ "node_modules/lit-element-router/lit-element-router.js",
+ "node_modules/scrollable-component/index.js",
+ "node_modules/jquery/dist/jquery.min.js",
+ "node_modules/bootstrap/dist/css/bootstrap.min.css",
+ "node_modules/bootstrap/dist/js/bootstrap.bundle.min.js",
+ "node_modules/@haxtheweb/product-card/lib/fields.json",
+ "node_modules/@haxtheweb/dynamic-import-registry/dynamic-import-registry.js",
+ "node_modules/@haxtheweb/img-pan-zoom/lib/openseadragon/openseadragon.min.js",
+ "node_modules/@haxtheweb/wc-autoload/wc-autoload.js",
+ "node_modules/@haxtheweb/elmsln-apps/lib/*/*.js",
+ "node_modules/@haxtheweb/stop-note/lib/svgs/*/*.svg",
+ "node_modules/@haxtheweb/simple-icon/lib/svgs/*/*.svg",
+ "node_modules/@haxtheweb/hax-iconset/lib/svgs/*/*.svg",
+ "node_modules/@haxtheweb/wave-player/lib/wavesurferjs/dist/wavesurfer.js",
"node_modules/@webcomponents/webcomponentsjs/*.js",
"node_modules/@webcomponents/webcomponentsjs/bundles/*.js",
+ "node_modules/@webcomponents/webcomponentsjs/webcomponents-bundle.js.map",
"node_modules/monaco-editor/min/**",
"node_modules/monaco-editor/min-maps/**",
"node_modules/lunr/lunr.js",
- "!node_modules/@vaadin/*/test/*",
- "node_modules/pdfjs-dist/build/pdf.js",
- "node_modules/pdfjs-dist/build/pdf.worker.js",
- "!node_modules/@lrnwebcomponents/*/*.story.js",
"node_modules/msr/MediaStreamRecorder.min.js",
- "node_modules/@lrnwebcomponents/chartist-render/lib/chartist/dist/chartist.min.js",
- "!node_modules/@webcomponents/webcomponentsjs/gulpfile.js"
+ "node_modules/@haxtheweb/chartist-render/lib/chartist/dist/chartist.min.js",
+ "node_modules/@haxtheweb/code-sample/lib/highlightjs/languages/*.js",
+ "node_modules/idb-keyval/dist/*.js",
+ "node_modules/safari-14-idb-fix/dist/*.js",
+ "!node_modules/@polymer/app-layout/templates/**",
+ "!node_modules/@polymer/app-layout/patterns/**",
+ "!node_modules/@polymer/*/demo/*.js",
+ "!node_modules/@haxtheweb/haxcms-elements/demo/dist/*.js",
+ "!node_modules/@haxtheweb/elmsln-apps/lib/*/demo/*",
+ "!node_modules/@haxtheweb/simple-icon/lib/svgs/elmsln-custom",
+ "!node_modules/@haxtheweb/wave-player/lib/wavesurferjs/src/**",
+ "!node_modules/@vaadin/*/test/*",
+ "!node_modules/@haxtheweb/*/test/*",
+ "!node_modules/@webcomponents/webcomponentsjs/gulpfile.js",
+ "!node_modules/@haxtheweb/storybook-utilities/storybook-utilities.js",
+ "!node_modules/@haxtheweb/*/*.umd.js",
+ "!node_modules/@haxtheweb/*/*.amd.js",
+ "!node_modules/@haxtheweb/*/*.es6.js",
+ "!node_modules/@haxtheweb/*/*.stories.js",
+ "!node_modules/@haxtheweb/*/*/*.stories.js",
+ "!node_modules/@haxtheweb/*/*.storiesold.js",
+ "!node_modules/@haxtheweb/*/*/*.storiesold.js",
+ "!node_modules/@haxtheweb/*/*.story.js",
+ "!rollup.config.js",
+ "!*.stories.js",
+ "!*.story.js",
+ "!*.umd.js",
+ "!*.amd.js",
+ "!*.es6.js"
],
"sources": [],
"builds": [
{
"name": "es6",
- "browserCapabilities": [
- "es2015",
- "modules"
- ],
+ "browserCapabilities": ["es2018", "modules"],
"js": {
- "minify": false
+ "minify": false,
+ "transformImportMeta": true
},
"css": {
- "minify": true
- },
- "html": {
- "minify": true
- },
- "bundle": false
- },
- {
- "name": "es5-amd",
- "js": {
- "minify": true,
- "compile": true,
- "transformModulesToAmd": true
- },
- "css": {
- "minify": true
+ "minify": false
},
"html": {
- "minify": true
+ "minify": false
},
"bundle": false
}
@@ -71,8 +121,6 @@
"moduleResolution": "node",
"npm": true,
"lint": {
- "rules": [
- "polymer-3"
- ]
+ "rules": ["polymer-3"]
}
-}
\ No newline at end of file
+}
diff --git a/rss.xml b/rss.xml
index 242d700..b6d51d8 100644
--- a/rss.xml
+++ b/rss.xml
@@ -1,1324 +1,13 @@
-
- hax-the-web
- https://haxtheweb.org//rss.xml
- Project home and documentation for all things HAX
- Copyright (C) 2021 https://haxtheweb.org/
- en-us
- Wed, 07 Apr 2021 14:24:50 +0000
-
-
- Internationalization - i18n
- https://haxtheweb.org//item-cdd303d0-4490-4433-94fa-0e78cf849e80
-
- We've created a way to internationalize ANY web component you create. Because this is a complex topic, and we seek to empower anyone, anywhere to work with web components; i18n is a critical piece of accessibility and improving knowledge access on the web. Doing so without requiring a framework driven approach, or even knowing how our element will be used in production, is a complicated series of decisions.
-This blog series details these decisions
-
I18NMixin
-
-
- Install the mixin via yarn or npm: yarn add @lrnwebcomponents/i18n-manager
-
-
- create a folder in your element called /locales
-
-
create a file called my-element.es.json for the spanish translation of your element. Japanese would be my-element.ja.json for example.
This invokes a dependency on our manager which you might not want to have in your element. If you want to do a similar approach but without dependencies, you just have to feed a custom event to our manager. You'll still have to use the convention for translatable text, but here's how you can invoke the event needed
Using the vanilla approach, you'll still need to have a /locales directory and the same naming convention. Our mixin just simplifies the integration a bit as well as the timing of what it's initiated but this event registration method will still work within any element that's going to arrive in HAX/HAXcms or any property you make that isn't using HAX at all.
- ]]>
-
-
- https://haxtheweb.org//item-cdd303d0-4490-4433-94fa-0e78cf849e80
- Wed, 07 Apr 2021 14:24:50 +0000
-
-
- haxHooks
- https://haxtheweb.org//item-44cc230b-07db-442a-90cf-687e2d089a5d
-
- Elements can integrate deeply into HAX state management using what we call "hax hooks". By supplying a method on your web component like
- haxHooks()
- you are magically able to tap into different life-cycle steps within the HAX editor.
-
-
Because of the simplicity and power of
- haxHooks
- this may not be an exhaustive list and
+
+ hax-the-web
+ https://haxtheweb.org//rss.xml
+ Project home and documentation for all things HAX
+ Copyright (C) 2024 https://haxtheweb.org/
+ en-us
+ 1970-01-20T23:35:16.452Z
+
- the internal code documentation on this should be consulted
- (or open an issue to ensure we document a missing hook!). You can search the lrnwebcomponents monorepo for usage of haxHooks
- in order to discover additional implementations beyond what is pointed to below.
- This is a basic example in which each of the strings you'd then implement as their own async
- callbacks. async
- / await
- allows HAX to safely defer to your element to do whatever it wants to the DOM / internal structure of that callback, without disrupting element activation or conversion of DOM structure to HAX Element Schema, what it uses to virtualize the body for sanitation
- purposes at the time of save / adding new things to the page.
-
The most powerful hook in haxHooks. This fires whenever an element is read in via the appStore and it's definition loaded for use. This hook supplies an instance of the HAXStore which is the internal state management of HAX (written in MobX). You can use this object to do whatever you want to HAX. While seemingly too powerful, here are some examples of past things to leverage this super power for good
-
-
- code-sample
- - the code-sample tag uses this hook in order to inject additional shortcut logic. If the tag is supplied, things like
- ```js
- will convert to a JS based code-sample. It also hijacks the baked in support for
- ```
- in order to inject a code-sample tag instead of the default
- code
- tag
-
-
supplying "apps" based on tag -
- wikipedia-query
- and
- github-preview
- supply custom public API search endpoints based on their tag being loaded. This way you can use the "Media" menu in order to search Github or Wikipedia in HAX just by including these tags in your autoloader block of the appstore.
-
-
supplying translatable haxProperties -
- meme-maker
- and
- twitter-embed
- supply custom translations for their haxProperties. This means that if you were to edit these elements using the editor in Spanish (es), you would see the fields and example inputs in Spanish (es) as opposed to their English (en) default text supplied by the
- static get haxProperties()
- method.
-
-
-
- activeElementChanged(element, value)
-
-
This runs whenever a user activates / selects an element to modify in HAX. This supplies an instance of the element / DOM node that is active as well as if we are active (true) or inactive (false). This hook can be used to modify state / functional aspects of your elements just prior to it receiving activation by hax. An example use-case for this could be preventing default behavior for an element that is a clickable link (see:
- ebook-button
-). Another possible usage is making pieces of the internal
- shadowRoot
-
- contenteditable
-, only while activated (see:
- meme-maker
-).
-
-
- editModeChanged(value)
-
-
This runs on all active nodes in the
- hax-body
- tag when the editing state of the HAX editor itself changes. If we are now editing, value is
- true
-, when we go to save / are no longer editing, it is
- false
-.
-
- inlineContextMenu(ceMenu)
-
This hook runs after element activation in order to allow elements to supply custom editing buttons and operations to the in-context menu that hovers above active elements. You have access to the instance of the custom elements hax menu element (hax-ce-context) and can add whatever buttons you want at this time with custom callbacks. See multiple-choice
- for an example of how you can leverage this. multiple-choice
- uses this to add quick buttons for adding and removing potential answers quickly.
-
- preProcessNodeToContent(node)
-
This runs right before nodes are converted to content in the entire hax-body. This happens when the user has triggered a save event and we are converting the DOM from real nodes into the HTML text that is to be saved / returned to a backend. This hook allows you to do any known data clean up to the element prior to it being converted to HTML. See multiple-choice
- for an example of taking a complex data property and converting it to innerHTML children at the time of save for progressive enhancement purposes.
-
progressiveEnhancement(element)
-
This hook runs WHILE the node is being converted to text and should return a string that will be appended into the innerHTML area of the element. This is an alternative to what you could accomplish during preProcessNodeToContent but want to work with a string based response. See meme-maker
- for an example of using this to inject innerHTML which only is for SEO purposes.
-
- postProcessNodeToContent(content)
-
This hook runs after preProcessNodeToContent and progressiveEnhancement and before the element is returned in the hax-save event. This runs AFTER the node has been converted to content. This is useful for forcible content clean up like regex'ing output for specific words to not leak into output. See video-player
- for ensuring there are no internal empty arrays for data is not a required field.
-
- preProcessInsertContent(detail)
-
This is a hax schema element, our virtual dom node, that is about to be inserted into the hax-body. This allows for custom modification to the data that's about to be converted to a DOM node. See multiple-choice
- for an example of ensuring that answer data doesn't bleed through to the page. This hook runs on duplication as well as inserting a node by the user selecting the block.
- ]]>
-
-
- https://haxtheweb.org//item-44cc230b-07db-442a-90cf-687e2d089a5d
- Wed, 07 Apr 2021 13:32:25 +0000
-
-
- HAX11ty
- https://haxtheweb.org//item-587de126-437b-4864-a3ea-54078837127c
-
- HAX + 11ty = HAX11ty
-! HAX11ty gives you the best of SEO from 11ty while using the HAX editor and the HAXcms theme engine for presenting material. This gives you the SPA capabilities of fast loading routes in HAXcms but reload the page and it loads a physical file for high SEO ala 11ty!
-
It even has github actions support built in! Meaning you can check out the mini-doc site for HAX11ty
- which is self-updated when we update the docs / repo for HAX11ty.
-
-
- ]]>
-
-
- https://haxtheweb.org//item-587de126-437b-4864-a3ea-54078837127c
- Mon, 17 Aug 2020 19:01:17 +0000
-
-
- Block settings
- https://haxtheweb.org//item-eca7c8a4-393a-4e68-8cb4-440e94683738
-
- Block settings will change contextually based on which block has been selected in the editable area of the page. In this screenshot, a paragraph has been selected and so the icon associated with it is shown as well as the name of the element. If we selected a meme or other tag we'd see contextual settings based on what that HTML element tells HAX should be the editing interface.
-
Normal HTML Paragraph Tag
-
Meme Tag
-
Notice with the meme element that it now has additional fields which when changed are reflected in the page instantly!
- ]]>
-
-
- https://haxtheweb.org//item-eca7c8a4-393a-4e68-8cb4-440e94683738
- Mon, 17 Aug 2020 18:41:49 +0000
-
-
- Templates and Layouts
- https://haxtheweb.org//item-aa589faa-e860-4221-82fa-df6d57328ac2
-
- Templates and layouts allow you to drop in pre-built pieces of content structure. This might be a series of images or an example of content that could be written.
- ]]>
-
-
- https://haxtheweb.org//item-aa589faa-e860-4221-82fa-df6d57328ac2
- Mon, 17 Aug 2020 18:41:49 +0000
-
-
- Roadmap
- https://haxtheweb.org//welcome/roadmap-1
-
- HAX encompasses many different projects
-
This roadmap illustrates all the projects related to HAX and ELMS:LN, which HAX comes from. The little settings gears found throughout illustrate enhancements and next steps for the different projects in our wheel house.
-
As you can see, there's a lot of planned enhancements to HAXeditor and HAXcms with a lot of additional future capabilities in ELMS:LN as a result of these projects. It's important to understand these relationships through and how innovations flow between them.
-
Relationships of major pieces
-
HAX has many different parts detailed here, so let's look at the relationship between these pieces before getting into the roadmap. HAX projects are part of the ELMS:LN organization and so ELMS:LN is also included in these roadmap details.
-
HAXiam, HAXcms, HAXeditor are three projects that make up the "HAX" name space, all of which benefit from being built on web components. HAXiam is a server technology while HAXcms is a mix of server and front end assets. HAXeditor is fully front-end code which then requires a backend to save and load pages from.
-
Below is an image consolidating information found on this site with arrows illustrating flow of innovation. Web components are always our building blocks, usually bubbling up as a need in either ELMS:LN, HAXcms or HAXeditor. From there, HAXeditor influences and improves ELMS:LN and HAXcms. ELMS:LN has a copy of HAXcms inside of it so sees improvements from both platforms. HAXiam just makes sure that copies of HAXcms are generated.
-
Now with this foundation you can dig into the different pieces of the project roadmaps.
- ]]>
-
-
- https://haxtheweb.org//welcome/roadmap-1
- Thu, 08 Aug 2019 18:53:07 +0000
-
-
- ClassicPress
- https://haxtheweb.org//integrations-1/classicpress-1
-
- ClassicPress
- is a popular fork of WordPress that's even easier to get HAX up and running then it is in the original!
-
-
HAXcms powers this website and is a hybrid static site generator, a new class of CMS. It's hybrid in that everything is written to static like a static site generator and it's 100% decoupled via web components.
-
-
-
-
Features
-
Micro-site manager, so manage multiple sites from a single HAXcms install
-
Each site is powered by static files which live in version control
-
Every change is executed by the front end via HAX / Outline tools
-
Every change is automatically tracked in version control (zip the folder and send it to a friend and it'll work)
-
The "database" is powered by a site.json file that lives with the site
-
All operations write to static files so every change is as if you editing HTML by hand (but you didn't... HAX did)
-
Ability to serve up as a static site on CDNs (this site is on GH pages + a CDN) via Publishing which makes a purely static copy with a service worker and the whole jazz for offline / installable capability (0 config)
-
Build your own themes via custom front end dev if you like or use one of our baked in ones
-
-
It is a flat file generator with a UI and the UI contextually loads based on if you should see it. It's weird, we know, and that's also why we have trouble describing what it is. It's a flat file CMS without tooling required. It's a sustainable way of building and maintaining a "CMS" as it has multiple pages, can handle custom fields, custom themes, but yet it doesn't require infrastructure to keep running beyond PHP / node / Beaker browser to act as a back end to edit the static files.
-
It's an organic CMS. A living yet permanent website. It's hacking the limitations of content authoring capabilities. It's why we say, we're HAX The Web.
-
Core Principles
-
Support all platforms and devices (CMS, App, etc)
-
Empower authors to write code without ever looking at code
-
All content produced must work with or without HAXeditor available
-
Support older markup, regardless of structure, as best we can
-
HAX will learn the rules of producing elements, it won't dictate them
-
Decentralize all the things, empower all the peoples
-
-
Cross platform
-
Because we've adopted the web component
-
- standard in the development of both HAX (authoring system) and HAXCMS (content management), everything we create and compile via our open tooling
- can support about 98.4% of all browser traffic globally without server side rendering. HAXcms also employs a progressive enhancement methodology meaning that it can hit 100% of all browsing traffic with content.
-
This means that you can use the latest and greatest of the web and not have to constantly worry about a library changing! The dawn of the age of web components is now, join the revolution!
-
Platform support
-
Evergreen
- browsers
- (93+% of traffic) - no polyfills!
See F.A.Q.
- for a more detailed break out of stats
-
-
No content lock-in
-
The elements that make up HAX can be delivered via a CDN or installed locally. This means that the functionality is tied to the browser
-
- and NOT
-
- to the platform itself (huh?). Well, think of all the complex functionality of any site you've ever built or used. Then add content to that site. Now move that site (in your mind) to another server. What has to be migrated to maintain the content functioning that isn't actually content?
-
For example, take this quiz:
-
- ]]>
-
-
- https://haxtheweb.org//welcome/why-haxcms-1
- Wed, 24 Jul 2019 12:45:22 +0000
-
-
- Scavenger Hunt
- https://haxtheweb.org//scavenger-hunt-1
-
- Become part of our dynasty franchise * *by wearing a cool jersey
-
-
-
-
-
We're building the greatest roster of people ever to HAX the complacency of our industry. Take the HAX scavenger hunt at the next event to join the movement!
-
Past winners rocking their merch from completing the hunt!
-
-
- ]]>
-
-
- https://haxtheweb.org//scavenger-hunt-1
- Wed, 24 Jul 2019 12:15:37 +0000
-
-
- Life cycle
- https://haxtheweb.org//documentation-1/haxcms/life-cycle
-
- This is a general life cycle that happens when HAXcms "boots up". When web components are unpacking the contents of what to do it generally will work this way.
-
page load, should it be no-js or a web component delivered, preflight
-
haxcms-site-builder loads site.json, reads JSON Outline Schema and starts to bootstrap that into a theme, items, title, etc
-
Appends a haxcms-editor-builder tag which checks for "context"
-
Context is established based on global values for php, nodejs, beaker, etc
-
Uses a login end point to check if there's a JWT in the user's local data
HAXeditor gets injected into the correct place in the theme which then all of that unpacks and does its thing
-
-
Event driven architecture
-
HAXcms allows for jumping in at different core operational steps and reacting to these changes based on an event driven design pattern. This means that an event "fires" in PHP, much like it does in JavaScript and code written to react to it can make changes at that point in the operation.
-
Here is an example from HAXiam which implements custom configuration event listeners
-// file included which has the class in question
-include_once str_replace('_iamConfig/HAXcmsConfig.php', '', __FILE__) . '/system/lib/IAM.php';
-// in the configuration file HAXcmsConfig.php
-// this adds an event listener for the haxcms-jwt-get event
-// and then says to pass the data in question to class $IAM->getJwtUser();
-$HAXCMS->addEventListener('haxcms-jwt-get', array($IAM, 'getJwtUser'));
-// later on in additionally included code
-class IAM {
-/**
- * Callback for event: haxcms-jwt-get
- */
- public function getJwtUser(&$token) {
- if ($this->enterprise->userVar) {
- $token['user'] = $this->enterprise->userVar;
- }
- }
-}
-// this ensures that there is a global $IAM object
-// it also ensures there's an instance so that when our above
-// listener fires it'll correctly associate to this code
-global $IAM;
-$IAM = new IAM();
-
Core listeners
-
Core listeners to influence how the data is constructed. You can add these to your _config/config.php file
-
haxcms-init
- - just after HAXcms bootstraps its initial configuration
-
haxcms-site-metadata
- - when constructing metadata block at the top of the document
-
haxcms-connection-settings
- - for authorized users, this is the block of end points for connecting to and modifying HAXcms logic as far as where data flows.
-
-
Enterprise integrations and SSO
-
The following hooks allow for supplanting the HAXcms (intentionally) simplistic login system. This allows you to do custom integrations for your organization. HAXiam implements many of these
- if you need specific examples.
-
haxcms-login-test
- - when a login didn't pass our simplistic built in checks. Useful for enterprise integrations and other SSO methods of access
-
haxcms-validate-user
- - same as login-test except this fires to validate every transaction to ensure the user name matches when decoding the JWT
-
haxcms-jwt-get
- - when we ask for the JWT. This allows SSO to supply the token manually via a different methodology than our core one
-
haxcms-refresh-token-get
- - when our connection is deemed needing to refresh, this supplies the refresh token for when and what that looks like
-
- ]]>
-
-
- https://haxtheweb.org//documentation-1/haxcms/life-cycle
- Fri, 05 Apr 2019 20:27:27 +0000
-
-
- I have issues
- https://haxtheweb.org//welcome/i-have-issues
-
- You have a problem or would like to contribute to anything in our universe? That's awesome! All issues, feature requests and general thumbs up should happen in our issue queue on github: https://github.com/elmsln/issues/issues
-
-
- ]]>
-
-
- https://haxtheweb.org//welcome/i-have-issues
- Mon, 25 Mar 2019 23:24:55 +0000
-
-
- Troubleshooting
- https://haxtheweb.org//documentation-1/haxcms/troubleshooting
-
- These are some common issues / resolutions in HAXcms related to installation, publishing, etc.
-
I installed HAXcms and forgot my password
-
Your username and password can be found in _config/config.php on the server (assuming local development)
-
I clicked login and nothing happened and now I'm locked out.
-
Clear your browser cache. A cookie is set that might be invalid.
-
-
Open a new browser and try to login again
-
-
I clicked publish and nothing happened
-
Publishing can take up to a minute or so at times since it's creating a commit, rewriting files and then the front end is waiting on the push to github before it triggers a successful response.
-
If it did fail to publish, you might not have git setup. Click the gear icon on the dashboard (site listing) and ensure you've setup github / git integration correctly.
-
-
Realize that everything is just a file and that our json outline schema is very easy to read. So if there's an issue with something related to publishing, check _sites/mysite/site.json for publishing, then _config/config.json. All settings and variables cascade in this way. Settings are stored globally, then replicated locally to allow them to be pealed off and more easily imported / exported into other setups.
- ]]>
-
-
- https://haxtheweb.org//documentation-1/haxcms/troubleshooting
- Mon, 25 Mar 2019 23:16:04 +0000
-
-
- Skin a site
- https://haxtheweb.org//documentation-1/haxcms/theming/skin-a-site
-
- Theme skinning is the easiest way to build a decent looking theme in HAXcms. This method is geared toward people that know CSS and HTML but can't get into the weeds of web components or javascript.
-
Workflow
-
Make a new site in the HAXcms UI
-
-
Select "Custom theme" as your theme
-
In the file system go to _sites/mynewsite
-/theme
-
Edit theme.html to modify the structure
-
Edit theme.css to modify the design
-
-
This is the easiest way to skin HAXcms to your liking. It's able to ship and work in CDNs and is the minimal barrier to entry for those used to seeing HTML and CSS files that they can touch and see the change. It requires no tooling to utilize either!
-
- ]]>
-
-
- https://haxtheweb.org//documentation-1/haxcms/theming/skin-a-site
- Sat, 23 Mar 2019 15:21:47 +0000
-
-
- Dev workflows
- https://haxtheweb.org//documentation-1/haxcms/theming/dev-workflows
-
- Our development workflow is as follows (for themes)
-
All custom theme work happens in your _config directory
-
-
Make my-theme.js, pull everything together, either in this directory or in a wcfactory
- catalog of elements you've made
-
Reference this in you _config/my-custom-elements.js element
-
Update the _config/config.json block that says themes
- to include something like...
This tells HAXcms UI that you can now select the theme (but don't yet, it won't be valid)
-
Local development workflow during theme development
-
We use polymer cli to serve up and work on web components locally and while you don't have to, it's recommended as part of the WCFactory workflow.
-
Make a new site in the HAXcms UI
-
-
Go to _sites/mynewsite and run polymer serve --npm --open --entrypoint dist/dev.html
-
-
-
Adjust the URL that opens to only be the IP address with no path after it
-
You'll see your site open up for local development work, which will be leveraging any assets referenced in your node_modules directory at the HAXcms project root.
-
To add / install new assets run yarn (or npm) add @what/ever-you-want --save
-, just like you would any other project you work on in FE dev
-
edit your site's site.json manually to update the theme to point to the theme location your actively working on
-
Develop away until it is to your liking
-
-
Shipping the theme
-
To ship the theme, you'll need to do a polymer build routine
Delete the symlink and replace it with your build directory
-
Now you can publish via the UI so long as you do not leverage a CDN
-
-
The future
-
Admittedly, the full on custom theme / web component development workflow is rough. It's hard to maintain a built copy in a modular system without tooling. In the future we plan on having tooling workflows built directly into WCFactory that allow you to streamline the development and creation of HAXcms themes.
-
Current limitations
-
You can't leverage existing CDNs (like webcomponents.psu.edu and whatever else is out there) that are pegged to the HAXcms project's source. You'll be creating a custom theme which then creates a custom build in effect so you'll want to ensure that you have some place that you can host the assets in order to power your site.
- ]]>
-
-
- https://haxtheweb.org//documentation-1/haxcms/theming/dev-workflows
- Sat, 23 Mar 2019 13:58:38 +0000
-
-
- CSS vars
- https://haxtheweb.org//documentation-1/haxcms/theming/css-vars
-
- CSS can be modified via CSS variables
-. CSS variables create a happy middle ground between the constraints of Shadow DOM (namely that styles are fully encapsulated) and designers wanting flexibility and control over design. We leverage CSS variables heavily in our template layer to allow you to "skin" just about any theme we have already.
-
A note about @apply
-
Unlike normal css variables, Polymer (the library we build our theme layer on) supports a convention for CSS variables that operate a bit more like Saas mixins. You can write blocks of code like @apply --my-variable-blob;
- which will then allow someone to mix in and apply whatever valid CSS attributes they want at that level. You can see several implemented below (both CSS variables and @apply blocks).
-
Example
-
This is an example from the haxcms-basic-theme
-which forms a clean baseline for most sites.
Ok ok, here's the deal. Queries are so important that they needed their own section. Calm down Dwight we'll handle that now.The site-
-
-
-
- query elements are incredibly powerful aspects of HAXcms theming that deserve their own section anyway.
-Give me all of the pages who have a tag "Funny"
-
-
When it's useful
-
Always. This is by far the most powerful element in our library. It can query the site structure and effectively return anything, anywhere that matches the criteria. It is for exact criteria matching though so you won't be getting children of page X unless you specifically requested them.
-
This is great for getting things like getting all the pages that don't have parents (top level items) which is exactly how the site-top-menu
-
- tag does it in conjunction with a dom-repeat tag (in that example).
-
Caveats
-
This doesn't render anything by itself
-
-
-
You have to then know how to do a two way template bind (Polymer convention looking like {{result}}
-
-or know how to use javascript in order to bind the results to visual output
-Give me all child pages
-that are 2 to 4 levels deep.
-
-
Delivered results
-What type of query is this leveraging again?
- site-query-menu-slice
-
-
Dynamic leveling
-
The dynamic leveling flag would allow you to create a query that analyzes the current active item (as example). And then say "Always give me 2-3 levels below this". In that instance you've got a dynamic sub-set of children being returned.
-
When it's useful
-
This can be useful for a block that always shows the children of the current page in a documentation site.
A site render query attempts to standardize the practice of wiring site-query up to something visual. It requires you supply something visual to get going and has the unfortunate limitation though that what you render must not be dynamic in nature.
When you have a static set of items you want to query once and have it be dynamic based on site infrastructure yet not be changing dynamically during site view.
-
Possible usage
-
As we haven't rolled this into any themes at the time, this could be useful for placing a "latest posts" block or "upcoming events" block. Anything that's dynamic based on the data being passed in but yet unchanging once it's loaded. Think of this as a simple "views" construct if you are from the Drupal worldview.
- ]]>
-
-
- https://haxtheweb.org//documentation-1/haxcms/theming/core-elements/query-examples
- Sat, 23 Mar 2019 13:58:38 +0000
-
-
- Web components
- https://haxtheweb.org//documentation-1/haxcms/theming/web-components
-
- Do you know full on web component development? Well, you can build a new theme from scratch. The best way to learn is by picking a part some of our examples. For this we'll analyze the haxcms-slide-theme
-
-.
-
As you can see this theme imports a few basic components helpful in the development of most themes. First we import PolymerElement and the HAXCMSTheme mix-in from our theme wiring library. Theme wiring provides a basis for wiring any custom element into the state management of HAXcms, typically without having to deal with any concepts of state!
-
Mix-ins
- class HAXCMSSlideTheme extends HAXCMSTheme(PolymerElement) {
-
-
Next we get the mix-in statement. Note how HAXCMSTheme wraps the PolymerElement class, thereby giving us a mix of the two together.
-
HAXCMSTheme mix-in class
-
You can learn more about what the mix-in class provides by digging into the HAXCMSThemeWiring.js
-
- class. This class bridges the HAXcms store (written in mobx) with the design layer. This way you can leverage anything in the store by writing the polymer convention for referencing a data bound variable in the template.
That last line with activeItemFields is part of the raw power under the hood of this approach. You can use HAXcms to create field definitions (in HAXschema
-
-) that then extend the capabilities of your pages.
-
Required CSS
-
There is one small required block of CSS when doing web component / theme development for HAXcms. It is the following:
- /**
- * Hide the slotted content during edit mode. This must be here to work.
- */
-:host([edit-mode]) #slot {
- display: none;
-}
-
-
This helps ensure that when your user clicks the edit button that they see the HAXeditor as opposed to the body of content they are currently working with. Then when they hit save, the HAXeditor sends the content to the backend which then updates the front end and they see the changes. This CSS ensures that it isn't visible during editing.
-
Required HTML
-
-
-
-
-
Related to the CSS, the following block of HTML must appear in your template somewhere (or in the case of simple-blog
-, an element leveraged by your theme). You can make this look like whatever you want beyond this but this ensures the HAXeditor can correctly target and be integrated using the HAXCMSTheme mix-in. There are ways to position and reposition the HAXeditor dynamically that will not be covered here but can be seen in simple-blog
-.
-
From there, design away. Write whatever CSS and HTML and JS you want! The example themes referenced in our docs all provide blue prints for different ways of leveraging our template system.
-
Next we'll discuss our Core template elements which you'll want to leverage in order to make theme development even cleaner!
- ]]>
-
-
- https://haxtheweb.org//documentation-1/haxcms/theming/web-components
- Sat, 23 Mar 2019 13:58:38 +0000
-
-
- Get Involved!
- https://haxtheweb.org//get-involved-1
-
- Join our community
-
Great! Here's some of the best ways for organizations to try "HAX" and get involved in the project.
-
Reach out to any of the members of the core project team on our slack
-. We're happy to do conference calls to forge partnerships especially around HAX or OER production solution though it has implications for any public site!
HAX makes up multiple projects across hundreds of web components and various other repos. It can be a bit overwhelming but we want you to imagine something... Imagine being a developer on HAX.
-
-
Step 'ight up
-
-
urz te next contrib
-
Because all it takes to get involved in HAX is, that's right, showing up in our repos and getting involved! Yes you too can be just as meme-able as we are!
-
All things HAX are powered by people just like you, wanting to make the web a better, more accessible, easier to use, less painful to develop for... place.Help us make that a reality and you too could have Snoop Dawg escorting you over to a brand new car*
*Claims vs reality may vary. Just help us out and we'll see where it goes..
-
- ]]>
-
-
- https://haxtheweb.org//get-involved-1
- Thu, 21 Mar 2019 19:46:24 +0000
-
-
- Presentations
- https://haxtheweb.org//welcome/presentations
-
- This is the youtube playlist
- of all things HAXTheWeb
-
-
This playlist is updated on a regular basis so make sure to subscribe to the youtube channel for updates. There's also many other playlists related to all things ELMS:LN, WCFactory, HAXcms and web components in general.
- ]]>
-
-
- https://haxtheweb.org//welcome/presentations
- Mon, 18 Mar 2019 12:06:57 +0000
-
-
- Core elements
- https://haxtheweb.org//documentation-1/haxcms/theming/core-elements
-
- While you're not required to use them, HAXcms supplies a series of elements that can make theme development effortless. You can see the source of these in greater detail under the theme directory of haxcms-elements
-
-
-. This is a brief overview of what they are and what they provide to your interface.
-
HAXcms seeks to apply the SDS pattern, a technique we made up just for this sentence, for dramatic effect
-. As everyone knows who is about to read the next heading, SDS stands for:
-
So. Damn. Semantic.
-
Whew, I need an ice cold drink to wash away the semantic sweats.
-
Yes, that's right, HAXcms allows you to theme a complex state managed system without needing to understand state management... like... at all.
-
"But I understand state management and it's important to me"
-
That's awesome, four people on twitter, but most designers just want to design! They don't need or want to understand the intricacies of making a collapsed field area expand relative to what item has been dictated as active in the store*.
-
*an intentionally confusing worded sentence
-
-
-
-
We use MobX to do our state management if that's something you care about and some of our themes directly implement and interface with the state management layer. See Simple Blog's footer element
-
-
- for a great example of why state management is a PITA.
-
-
-
Back to the elements jerk
-
Ok fine, here they are. Here's the list of ES module imports to get them
Now here's what each of them provide you (pretty self explanatory because #SDS)
-
site-active-title -
-the title of the active item wrapped in a h1 tag
-
-
site-children-block
- - all child menu items based on a criteria match
-
site-outline-block
- - part of the outline based on criteria match
-
site-footer
- - a basic footer with license element based on site details
-
site-modal
- - a basic modal with button that can house other elements
-
site-breadcrumb
-
- - a breadcrumb trail for the active menu item
-
site-dot-indicator
- - site links but as a simple line of dots
-
site-menu-button
- - buttons for navigating through the active items in the menu. This is next, previous, parent and first child kinds of options.
-
-
-
site-menu
-
- - A visualization of the hierarchy of your site, complete with checkmarks given per page the user goes to (optional) as well as a lot of styling options and a highlighted bar that scrolls the menu into view for small screens. It's fantastic and one line.
-
site-top-menu
- - Top level menu links with indicator that scrolls to focus
-
site-print-button
- - print button with support for 4 levels of printing the site
-
site-rss-button
- - a button that displays a link (opened in a new window) to get the RSS feed in RSS 2.0 or Atom 1.0 format (also applies correct semantic values for bots to discover)
-
site-title
- - a link to the homepage of the site wrapped in an h1 tag
-
-
-
-
See the elements themselves for more details API examples and check out our themes as we leverage them heavily across the core themes.
-
A word about style
-
We use CSS variables to style all the bits inside of our custom elements. So if you don't like the styling, look at the CSS variables we make available and style away. The "Learn 2 theme"
-
-
- is a great example implementing multiple levels of styling against multiple HAXcms site elements. You can always you know, go back and reread the CSS variables section
-.
-
- ]]>
-
-
- https://haxtheweb.org//documentation-1/haxcms/theming/core-elements
- Wed, 13 Mar 2019 00:45:37 +0000
-
-
- Publishing
- https://haxtheweb.org//documentation-1/haxcms/publishing
-
- HAXcms requires being published in order to be visible to other people. Working locally or on Desktop or on a server, is akin to you writing a document on your computer. It's not shared with anyone. We recommend you setup publishing ahead of time to save hassle later.
-
Setting up publishing
-
From the HAXcms site listing
- page, click the settings gear in the top right corner.
-
Next you'll see a modal that has options for plugging in your github credentials. We don't save your password and this aspect is optional. If you do enter your password, a one time API call is made on your behalf from your container which will setup an ssh key pair. This allows for all future requests to publish to happen automatically on your behalf. Your password is not stored. If you don't want to set this part up, you can plug in the rest of the git settings, save, and then manually publish files after using the UI (see last heading on this page).
-N
Publishing from your sites / new sites
-
When you want to share your site with people or update your website, hitting the Publish button inside of your site is how to do this. Click the settings gear in the bottom right to get started.
-
Currently GitHub is the only provider supported in the local installation method (or from DDEV / one of the supported container providers). In the future hitting publish will have additional development flexibility.
-
Understanding what's actually happening
-
-
When you hit publish, a few things happen to make your site "web ready". This is the general order of those operations:
-
HAXcms takes the underlying files and commits them all to version control (though they already should be)
-
-
-
It then pushes these to the origin of the git repository (likely github)
-
-
Then it switches to the branch you do your publishing from. In github, this is the gh-pages
-
- branch, but can deviate as needed.
-
-
Next it deletes symlinks and replaces them with the correct references as needed and leverages the "cdn provider" you specified when setting up HAXcms in order to super charge your files for end users.
-
-
It uses twig
-
- to step through and correctly rewrite references in the index.html of your site to match the paths of where it's going to be sent
-
-
Then it adds all this to version control and sends it up to your gh-pages branch.
-
-
It does some local file clean up and sets things back to master branch for the next time you go to work on everything
-
-
-
When this is all done, in the UI you'll see a link to your site after it's indicated a successful publish (meaning it pushed the files up there). Depending on where you host your content it may take a few minutes to see the change, though GitHub is usually up within about 2 minutes.
-
Once about 2 minutes or so has passed, refresh your live site address or type in the URL of the site. If you've been there previously, you'll probably see the same content / theme as the last time you were there. After about 5 seconds, a message will pop up indicating "new content available" and clicking it (or refreshing the browser) will give you your updated content.
-
This last step happens because of what's called a "service worker". This enables your site to be 100% offline capable and ensures that your site only uses traffic and data when it's absolutely necessary.
-
A note on non UI publishing workflows
-
You might not have (or want to) setup the credentials between HAXcms and github / your git repo. That's ok. After you hit publish go to terminal / a Git GUI and run the following to publish your site:
HAXcms will have made sure that the gh-pages and master branches are valid for distribution, even if it wasn't able to actually send these files to their publishing destination.
-
- ]]>
-
-
- https://haxtheweb.org//documentation-1/haxcms/publishing
- Wed, 20 Feb 2019 06:10:05 +0000
-
-
- HAXcms
- https://haxtheweb.org//documentation-1/haxcms
-
- HAXcms, that which powers the site you are currently reading is a powerful "static site generator" paradigm. It leverages server technology in order to orchestrate a static site. That way the "server" is only used when needed for a user to securely develop their content.
-
Difference from past static generators
-
Unlike solutions like Jekyll
-
-, HAXcms is for anyone to publish a website, not just those that understand command line. HAXcms is intended to be installed and then allow users to entirely use a UI to create, publish and manage micro-sites.
-
Visualization
- ]]>
-
-
- https://haxtheweb.org//documentation-1/haxcms
- Wed, 20 Feb 2019 06:10:05 +0000
-
-
- Structure
- https://haxtheweb.org//documentation-1/haxcms/structure
-
- By design we've got a very simple structure. The goal of HAXcms isn't to lock you into anything and so we've simplified our file structure over other solutions.
-
The key directories / files include:
-
files - any files you've uploaded through the HAX interface
-
-
pages - folders named by their content uri that have index.html in it, no structure other then what you created when hitting save
-
site.json - JSON Outline Schema object that defines the pages in your site and their relationship to each other
-
index.html - front page of the PWA that stitch it all together
-
service-worker.js - makes it a PWA, no need to edi this
Have PHP? well then you can setup HAXcms pretty quick. Just download HAXcms and navigate to its directory in a browser. It'll attempt to automatically install (which is to create two basic folders). If all goes well you'll see some ASCii art telling you what your password is. HAXcms seeks to be a 0 config installation so if anything didn't work or make sense, just drop us a line in the issue queues.
-
Or from Command Line...
-
Just run this one command and you'll be HAXing the web in no time! This will step you through prompts (which can be scripted via arguments) to feed the backend what it needs to create the few configuration files it uses to load.
- # HAX the web and answer the prompts
-bash scripts/haxtheweb.sh
-
-
A note on bash
-
-
-
-
-
If you're having issues installing via the bash script, ensure you are on bash version 4.x. Some OS flavors start at 3.x which won't work.
-
-
-
-
-
MAMP
-
MAMP
-
-
-
-
-
-
- allows Mac and PC users to rapidly install a working webdev stack on their machine. Here's the steps you need to take if using this (or on similar site hosting).
-
Download the latest copy of HAXcms from github
-
-
-
- and place this in MAMP/htdocs
-
-either at the root level (as in copying the files you download into htdocs as shown in the image below) or by placing the folder in the directory (in the case where you have MAMP already installed / want to keep things tidy).
-
-
Open MAMP and hit the Start Servers Button
-
-
-
-
-
-
Click MY WEBSITE in MAMP start page to get started
-
-
-
-
-
Now you can build website organically off of MAMP!
-
DDEV / Docksal / Lando / Vagrant
-
We recommend using HAXcms in a docker container manager like ddev
-
-
-
-
-
-
-, though based on above you can see basically we're just downloading and running one command to get going. We support all of the above methods so pick the one you work with most often.
open a terminal window, go to the directory and type ddev start
-
-
-
-
-
-
-
- (for ddev) or fin init
-
-
-
-
-
-
-
- (for docksal) or lando start && lando magic
-
-
-
-
-
-
-
- (for lando) or vagrant up
-
-
-
-
-
-
-
- (for vagrant)
-
-
-
-
-
-
-
-
-
go to the link any of them give you in a browser
-
-
-
-
-
-
-
-
-
username/password is admin
-
-
-
-
-
-
-
-/admin
-
-
-
-
-
-
-
- to get building out static sites locally that you can push up anywhere!
-
-
-
-
-
-
-
-
-
Click the icon in the top right and you're off and running!
-
-
-
-
-
-
-
-
-
-
Apache gotchas
-
If installing on an existing server it might already have apache configurations that would cause HAXcms to have issues out of the gate
- (or any CMS for that matter). Make sure local overrides are allowed with something like the following:
-
- # /etc/apache2/apache2.conf
-
-<directory var/www/haxlocation>
- Options Indexes FollowSymLinks
- AllowOverride All
- Require all granted
-</directory>
-
- ]]>
-
-
- https://haxtheweb.org//documentation-1/haxcms/installation
- Wed, 20 Feb 2019 06:10:05 +0000
-
-
- Concepts
- https://haxtheweb.org//documentation-1/haxcms/concepts
-
- HAXcms seeks to be a microsite generator and manager that doesn't require any command line in order to operate
-. HAXcms leverages HAX to give a best in class authoring experience while HAXcms seeks to eliminate all the barriers to then publishing that content online.
-
Some words and phrases worth understanding in HAXcms
-
HAXeditor - the HAX editor
-
microsite - An individual site that's been created by a user
-
Outline - All sites are an outline, we use JSON Outline Schema to manage this
-
Theme - A single web component based theme that's agnostic of content
-
Elements / web components - design assets that work anywhere
-
- ]]>
-
-
- https://haxtheweb.org//documentation-1/haxcms/concepts
- Wed, 20 Feb 2019 06:10:05 +0000
-
-
+
\ No newline at end of file
diff --git a/service-worker.js b/service-worker.js
index b53ec96..48dda06 100644
--- a/service-worker.js
+++ b/service-worker.js
@@ -37,472 +37,7 @@
/* eslint-disable indent, no-unused-vars, no-multiple-empty-lines, max-nested-callbacks, space-before-function-paren, quotes, comma-spacing */
'use strict';
-var precacheConfig = [
- [
- "pages\/documentation-1\/hax-development\/index.html",
- "21AxbuTjN8wcpfx51zRnA"
- ],
- [
- "pages\/item-587de126-437b-4864-a3ea-54078837127c\/index.html",
- "mk06H7oladBb5rwx9mc7Ag"
- ],
- [
- "pages\/documentation-1\/haxcms\/theming\/core-elements\/query-examples\/index.html",
- "NjdVdnJSw9mZgPgscq2Lwg"
- ],
- [
- "pages\/welcome\/what-is-hax\/index.html",
- "DcxE2t11M6NhTN2KrQACg"
- ],
- [
- "pages\/documentation-1\/hax-development\/wcfactory-tooling\/index.html",
- "pJGvifIFd9uCxillmeoYVA"
- ],
- [
- "pages\/welcome\/index.html",
- "8NWgFO10VLBcjRpV8g"
- ],
- [
- "pages\/documentation-1\/hax-development\/hax-app-store\/apps\/index.html",
- "assMXoMHYMwMhBBFi8ugpQ"
- ],
- [
- "pages\/documentation-1\/haxcms\/theming\/css-vars\/index.html",
- "XrqKTnxrCsCIUYR7H2g"
- ],
- [
- "pages\/documentation-1\/haxcms\/concepts\/index.html",
- "z4I1O6SuABBc1kQwxIHzw"
- ],
- [
- "pages\/documentation-1\/ux-concepts\/add\/index.html",
- "Qo5DLal3zYH08jeETxpFnA"
- ],
- [
- "pages\/documentation-1\/core-concepts\/index.html",
- "ZDTuwJjNoVGV5eEItTppQ"
- ],
- [
- "pages\/documentation-1\/hax-development\/hello-world-element\/index.html",
- "WmPcKWmkjVC4CCa9xxD7Q"
- ],
- [
- "pages\/welcome\/why-haxcms-1\/index.html",
- "LZNJYTROu6Uw2EqwMOPoDQ"
- ],
- [
- "pages\/documentation-1\/haxcms\/installation\/index.html",
- "uW0I21adGvvNVU7CnpaH0g"
- ],
- [
- "pages\/documentation-1\/hax-development\/hax-app-store\/blox\/index.html",
- "zW9NtwyON8L1EmhhuBw"
- ],
- [
- "pages\/get-involved-1\/index.html",
- "Utz09RNthS38ismk9PjOg"
- ],
- [
- "pages\/integrations-1\/index.html",
- "z2egUjGk3t2HhVN5P8dpA"
- ],
- [
- "pages\/documentation-1\/haxcms\/theming\/skin-a-site\/index.html",
- "XHjxYL3auHdxcjkbqc70w"
- ],
- [
- "pages\/item-eca7c8a4-393a-4e68-8cb4-440e94683738\/index.html",
- "oyf0GDyr0oZYLczWQ9w"
- ],
- [
- "pages\/documentation-1\/haxcms\/structure\/index.html",
- "GDXNqZT3IEz2W3FGJaA"
- ],
- [
- "pages\/documentation-1\/hax-development\/hax-schema\/index.html",
- "VjnaSMcRz9fRPwuxJXh1w"
- ],
- [
- "pages\/welcome\/solutions\/index.html",
- "ObC0pyRkdR327PpUAZikjQ"
- ],
- [
- "pages\/documentation-1\/haxcms\/theming\/web-components\/index.html",
- "PZJFTK19QnrLVkihUttFfw"
- ],
- [
- "pages\/integrations-1\/wordpress\/index.html",
- "2RHDEPqfrcIhokRcg8gdg"
- ],
- [
- "pages\/documentation-1\/index.html",
- "DqALsfCYqsu7SrahklWnJg"
- ],
- [
- "pages\/documentation-1\/hax-development\/hax-app-store\/stax\/index.html",
- "JQaN7C71aosIYkeZ8yL7A"
- ],
- [
- "pages\/documentation-1\/ux-concepts\/find\/index.html",
- "6y04dMru1pok7ewW9pXC5Q"
- ],
- [
- "pages\/documentation-1\/ux-concepts\/index.html",
- "FJlDjMOAAj4IFohx1TUidg"
- ],
- [
- "pages\/documentation-1\/related-technologies\/index.html",
- "7GUIvUTyuOVDIKllAZe6A"
- ],
- [
- "pages\/documentation-1\/hax-development\/hax-app-store\/autoloader\/index.html",
- "TvseVCg664tQxEInGPRjA"
- ],
- [
- "pages\/item-aa589faa-e860-4221-82fa-df6d57328ac2\/index.html",
- "j3ivxcWezc7zLbIwIXf5ag"
- ],
- [
- "pages\/documentation-1\/haxcms\/theming\/core-elements\/index.html",
- "RJdXjluG8P1drayyA5qatw"
- ],
- [
- "pages\/f-a-q-1\/index.html",
- "0xf8Mz3wYpEslih5aKEmpQ"
- ],
- [
- "pages\/integrations-1\/drupal\/index.html",
- "xBEKR2l4VgUwiwqjT9aSg"
- ],
- [
- "pages\/welcome\/roadmap-1\/index.html",
- "7ASlq2i4eihExd5HhfGsA"
- ],
- [
- "pages\/documentation-1\/haxcms\/publishing\/index.html",
- "VW7CiO7Ay2R1MXZtLE33KA"
- ],
- [
- "pages\/item-44cc230b-07db-442a-90cf-687e2d089a5d\/index.html",
- "d0qMBnt0wHP696fHdFhWA"
- ],
- [
- "pages\/welcome\/presentations\/index.html",
- "ssik6P0CMBwzp23yv5HwEA"
- ],
- [
- "pages\/integrations-1\/backdropcms\/index.html",
- "GS5wg4QVKUTLAj0HGXVaA"
- ],
- [
- "pages\/scavenger-hunt-1\/index.html",
- "agzm2ngjYVpLONL4VP7Uw"
- ],
- [
- "pages\/documentation-1\/haxcms\/theming\/dev-workflows\/index.html",
- "uMa5s9ZNkKwbcqxpRW5b4Q"
- ],
- [
- "pages\/documentation-1\/haxcms\/life-cycle\/index.html",
- "1mFZTBuHt9Ga2B9b08ZTw"
- ],
- [
- "pages\/documentation-1\/haxcms\/index.html",
- "VEFONa2ClV3mbPmEShCB4A"
- ],
- [
- "pages\/item-cdd303d0-4490-4433-94fa-0e78cf849e80\/index.html",
- "bsh9XWtX3uGbNkpVIiMIg"
- ],
- [
- "pages\/documentation-1\/hax-development\/hax-element-schema\/index.html",
- "T3pwS38Un5Gj0OaKDST6yg"
- ],
- [
- "pages\/welcome\/i-have-issues\/index.html",
- "2MKtlrsbYX6Z5WhX6ObuQ"
- ],
- [
- "pages\/integrations-1\/classicpress-1\/index.html",
- "ParLrbIwU9c8OwP2PQvtw"
- ],
- [
- "pages\/documentation-1\/haxcms\/troubleshooting\/index.html",
- "8EIuTdwmwi2DArqZJPjsIA"
- ],
- [
- "pages\/documentation-1\/hax-development\/hax-app-store\/index.html",
- "fsGSBcIKWzrC559gbMgHw"
- ],
- [
- "pages\/integrations-1\/gravcms\/index.html",
- "Ql37Zrrt59RUIJjBM1V6mg"
- ],
- [
- "pages\/documentation-1\/haxcms\/theming\/index.html",
- "GIqNP3LJcHIxjKEjICN4Q"
- ],
- [
- "pages\/integrations-1\/creating-new-ones\/index.html",
- "9lAPWsnKOXLsjkdelxENA"
- ],
- [
- "index.html",
- "Dkp0PBqslnscvL652AY0g"
- ],
- [
- "manifest.json",
- "NQ6UNvs0WLO64hLCcFE39A"
- ],
- [
- "site.json",
- "s2UBPuG8LAnOXtostaqmA"
- ],
- [
- "files\/haxcms-managed\/512x512-3450183.png",
- "jcfmjnOGcJbDqOl4ZvDGg"
- ],
- [
- "files\/haxcms-managed\/310x310-3450183.png",
- "n40lEuJkrTEVnSC6g"
- ],
- [
- "files\/haxcms-managed\/192x192-3450183.png",
- "P7JoPuNqHJrutz20I5fg"
- ],
- [
- "files\/haxcms-managed\/150x150-3450183.png",
- "HRrXoOysh7d9CzrkFYyBg"
- ],
- [
- "files\/haxcms-managed\/144x144-3450183.png",
- "zLnxoWl5eb5KzsfhmqgWJg"
- ],
- [
- "files\/haxcms-managed\/96x96-3450183.png",
- "SRSagMlMYoiJTs02sZDLA"
- ],
- [
- "files\/haxcms-managed\/72x72-3450183.png",
- "77g5cPsEYDobTAFd0cl7g"
- ],
- [
- "files\/haxcms-managed\/70x70-3450183.png",
- "vp0BBkaAisUdUqayUp0g"
- ],
- [
- "files\/haxcms-managed\/48x48-3450183.png",
- "PwTBf70b77AnQGQXAeSmw"
- ],
- [
- "files\/haxcms-managed\/36x36-3450183.png",
- "qvIEbavd98wrqZlUBptxQ"
- ],
- [
- "files\/haxcms-managed\/16x16-3450183.png",
- "nBQfdTExKIC19E72heCQ"
- ],
- [
- "404.html",
- "QEzLbAYRfRrqwxyIGIpfNQ"
- ],
- [
- "files\/2019-01-25_14-05-59.png",
- "6WQ28zgmkTgXqluj7HBNBg"
- ],
- [
- "files\/2019-01-27_10-10-39.png",
- "wILedZJIMsevf3B9Q6JnFw"
- ],
- [
- "files\/Screenshot from 2020-08-17 14-34-32.png",
- "z9Nx0tbzmmEFCryi2nXurg"
- ],
- [
- "files\/2019-01-27_17-39-01.png",
- "6SiXrdVbeaDaffgT317zWg"
- ],
- [
- "files\/2019-01-27_17-39-31.png",
- "tlYT0GX9y1Q1VmHlddgvmw"
- ],
- [
- "files\/2019-01-27_17-33-57.png",
- "eC9DC3H2BWSxzcSHHYpuw"
- ],
- [
- "files\/2019-01-27_10-10-58.png",
- "VdWRH9717QXDzDu6e9imug"
- ],
- [
- "files\/2019-01-25_14-04-31.png",
- "TbwdTI6FF4xbVdVUEMzK7Q"
- ],
- [
- "files\/2019-03-12_16-45-51.png",
- "rvEknEJJwwxnbjQ862kg"
- ],
- [
- "files\/3450183.png",
- "2vPNkZKZ5sW8UVQoThAcRA"
- ],
- [
- "files\/2019-01-27_09-23-44.png",
- "Di9FJlwLIocBUvhnVi4A9w"
- ],
- [
- "files\/2019-01-27_09-23-59.png",
- "VEgN6kvHZPbXmOPEYaJA"
- ],
- [
- "files\/gitpublishingdata.jpg",
- "yKPwn9PbiCrE1nJqiy1JA"
- ],
- [
- "files\/2019-01-27_18-05-51.png",
- "xXmIr2GwnSmioMUNQolAYQ"
- ],
- [
- "files\/Screenshot from 2020-08-17 14-46-06.png",
- "tav8rnDaVHVsCuFZwJS0qg"
- ],
- [
- "files\/2019-01-29_22-47-53.png",
- "Lpbo3XZIKV6Dok6o2Afg"
- ],
- [
- "files\/pubwork1.jpg",
- "L2NfHWUo5GnFhNoKlNr9A"
- ],
- [
- "files\/HAXCms workflow.jpg",
- "h0QfGEQyTSwbkL9uFWojqw"
- ],
- [
- "files\/2019-01-27_09-23-33.png",
- "ySz3BTqt0BczeIJKCH4Q"
- ],
- [
- "files\/2019-01-27_10-25-22.png",
- "4eYa7xjiWdQ59ehcX3XGw"
- ],
- [
- "files\/Screenshot from 2020-08-17 14-42-07.png",
- "RT69Ri3DZJfn4C238YPtlg"
- ],
- [
- "files\/mamppage.jpg",
- "EfYuCCY2S2iOlf6VQ9b0w"
- ],
- [
- "files\/d8cdnimage.jpg",
- "wBPjaGz0B5mZFgb66I3HA"
- ],
- [
- "files\/mampstructure.jpg",
- "MKuoeUCwGLJrEO0UjmNLw"
- ],
- [
- "files\/2019-03-21_15-12-05.jpg",
- "TUnlTQRl7ktIFBVcwcPOQ"
- ],
- [
- "files\/Screenshot from 2020-08-17 14-43-47.png",
- "2hotxLkyeobZ9l7FuVi5Zw"
- ],
- [
- "files\/pubwork2.jpg",
- "rTTHXtetyfaaEWHgKBPg"
- ],
- [
- "files\/haxd8simply.jpg",
- "ZthRjMDItwiLMaIs4UF8A"
- ],
- [
- "files\/mampstart.jpg",
- "nRZdPZcrLcm67xIp3TYdQ"
- ],
- [
- "files\/Picture1.png",
- "9xJNkS7qmKy4hufccLOZqg"
- ],
- [
- "files\/2019-02-20_01-26-10.png",
- "vmeIeTNm1hK7GRG3Zwjp1A"
- ],
- [
- "files\/2019-02-20_01-26-01.png",
- "xRAxgZYXkmteGfclP7WQg"
- ],
- [
- "files\/sourceviewthispage.jpg",
- "4uHTjQlOpHSfDXLN1cP8w"
- ],
- [
- "files\/2019-01-27_10-22-28.png",
- "sTnTmDnmLQ9zb7lJUvukg"
- ],
- [
- "files\/59453a821222752c90fa970c937c2c396bff61f5-ngdle-university-faculty-side.jpg",
- "oTxKP22mGGCaMUMvUy4Ew"
- ],
- [
- "files\/IMG_20190127_153429.jpg",
- "yd4LYpwHWIv1yKGKmkQd4Q"
- ],
- [
- "files\/2019-02-25_16-22-25.png",
- "9FCh9SAIZNBrikiISCaHcA"
- ],
- [
- "files\/lego.jpg",
- "VXAkmIpVUqB2wzcVyd3x2Q"
- ],
- [
- "files\/ngdle.png",
- "zLtkcC36w1jGZoopv6kwAw"
- ],
- [
- "files\/2019-01-27_09-35-28.png",
- "feg5NUoR9fucYByzHfDJXA"
- ],
- [
- "files\/2019-01-27_09-45-04.png",
- "zDC1pmhvnlHuW6E51yQE5A"
- ],
- [
- "files\/Roadmap.jpg",
- "iFFmAFs0MRszoNRpIOTXTQ"
- ],
- [
- "files\/headshot272229.61999999825.jpg",
- "zMvFZhCgmpmbCyKaTp3bRQ"
- ],
- [
- "files\/Screenshot from 2020-08-17 14-36-15.png",
- "ZAZDTC8VyHUOfSKtGilhZg"
- ],
- [
- "files\/haxrelationships.jpg",
- "qtLhHIKnm1HCCAFnD96mA"
- ],
- [
- "files\/2019-01-27_10-22-48.png",
- "i3RibHTk0kxkChXembJFGg"
- ],
- [
- "files\/HAXshort.vtt",
- "nsneskvQ7H996xTa3DGH7Q"
- ],
- [
- "files\/2019-03-23_10-51-10.jpg",
- "uA3RmjTPTucU4zU3epjA"
- ],
- [
- "files\/demo.csv",
- "3Id2QkyorDuLUvz6MlRhA"
- ]
-];
+var precacheConfig = {{ swhash|json_encode(constant('JSON_PRETTY_PRINT'))|raw }};
var cacheName = 'sw-precache-v3--' + (self.registration ? self.registration.scope : '');
@@ -750,3 +285,6 @@ self.addEventListener('fetch', function (event) {
// Runtime cache configuration, using the sw-toolbox library.
+{% if cdnRegex %}
+toolbox.router.get(/{{ cdnRegex|raw }}/, toolbox.fastest, {});
+{% endif %}
\ No newline at end of file
diff --git a/site.json b/site.json
index d8f2d84..6e7460c 100644
--- a/site.json
+++ b/site.json
@@ -1,1571 +1,1594 @@
{
- "id": "95f2b045-cfdb-4e35-b29b-e7f71c859987",
- "title": "hax-the-web",
- "author": "elmsln",
- "description": "Project home and documentation for all things HAX",
- "license": "by-sa",
- "metadata": {
- "author": {
- "name": "ELMS:LN",
- "image": "",
- "socialLink": "https:\/\/twitter.com\/elmsln",
- "email": "hax@psu.edu"
- },
- "site": {
- "name": "haxtheweb",
- "created": 1547138719,
- "updated": 1617805490,
- "domain": "https:\/\/haxtheweb.org\/",
- "git": {
- "vendor": "github",
- "branch": "master",
- "staticBranch": "gh-pages",
- "url": "git@github.com:elmsln\/haxtheweb.org.git",
- "autoPush": false,
- "publicRepoUrl": "https:\/\/github.com\/elmsln\/haxtheweb.org\/tree\/master\/"
- },
- "static": {
- "cdn": "cdn.waxam.io",
- "lastPublished": 1617979997,
- "publishedLocation": "https:\/\/haxtheweb.org\/",
- "offline": false
- },
- "settings": {
- "pathauto": false,
- "publishPagesOn": true,
- "sw": false,
- "forceUpgrade": false
- },
- "version": "1.3.0",
- "logo": "files\/3450183.png"
- },
- "theme": {
- "element": "clean-two",
- "path": "@lrnwebcomponents\/clean-two\/clean-two.js",
- "name": "Course theme 2",
- "variables": {
- "image": "assets\/banner.jpg",
- "hexCode": "#009dc7",
- "cssVariable": "--simple-colors-default-theme-purple-7",
- "icon": "lrn:network"
+ "id": "95f2b045-cfdb-4e35-b29b-e7f71c859987",
+ "title": "hax-the-web",
+ "author": "elmsln",
+ "description": "Project home and documentation for all things HAX",
+ "license": "by-sa",
+ "metadata": {
+ "author": {
+ "name": "ELMS:LN",
+ "image": "",
+ "socialLink": "https://twitter.com/elmsln",
+ "email": "hax@psu.edu"
+ },
+ "site": {
+ "name": "haxtheweb",
+ "created": 1547138719,
+ "updated": 1726516452,
+ "domain": "https://haxtheweb.org/",
+ "git": {
+ "vendor": "github",
+ "branch": "master",
+ "staticBranch": "gh-pages",
+ "url": "git@github.com:elmsln/haxtheweb.org.git",
+ "autoPush": false,
+ "publicRepoUrl": "https://github.com/elmsln/haxtheweb.org/tree/master/"
+ },
+ "static": {
+ "cdn": "",
+ "lastPublished": 1617979997,
+ "publishedLocation": "https://haxtheweb.org/",
+ "offline": false
+ },
+ "settings": {
+ "pathauto": false,
+ "publishPagesOn": true,
+ "sw": false,
+ "forceUpgrade": false,
+ "gaID": null
+ },
+ "version": "9.0.5",
+ "logo": "files/3450183.png",
+ "tags": null
+ },
+ "theme": {
+ "element": "clean-two",
+ "path": "@haxtheweb/clean-two/clean-two.js",
+ "name": "Clean two theme",
+ "thumbnail": "build/es6/node_modules/@haxtheweb/app-hax/lib/assets/images/PartyStyle.svg",
+ "variables": {
+ "image": "assets/banner.jpg",
+ "imageAlt": null,
+ "imageLink": null,
+ "hexCode": "#009dc7",
+ "cssVariable": "--simple-colors-default-theme-purple-7",
+ "icon": "lrn:network"
+ },
+ "regions": {}
+ },
+ "node": {
+ "dynamicElementLoader": {
+ "h5p-element": "@lrnwebcomponents/h5p-element/h5p-element.js",
+ "hax-logo": "@lrnwebcomponents/hax-logo/hax-logo.js",
+ "a11y-gif-player": "@lrnwebcomponents/a11y-gif-player/a11y-gif-player.js",
+ "code-sample": "@lrnwebcomponents/code-sample/code-sample.js",
+ "citation-element": "@lrnwebcomponents/citation-element/citation-element.js",
+ "hero-banner": "@lrnwebcomponents/hero-banner/hero-banner.js",
+ "image-compare-slider": "@lrnwebcomponents/image-compare-slider/image-compare-slider.js",
+ "license-element": "@lrnwebcomponents/license-element/license-element.js",
+ "lrn-aside": "@lrnwebcomponents/lrn-aside/lrn-aside.js",
+ "lrn-math": "@lrnwebcomponents/lrn-math/lrn-math.js",
+ "lrn-table": "@lrnwebcomponents/lrn-table/lrn-table.js",
+ "lrn-vocab": "@lrnwebcomponents/lrn-vocab/lrn-vocab.js",
+ "lrndesign-blockquote": "@lrnwebcomponents/lrndesign-blockquote/lrndesign-blockquote.js",
+ "magazine-cover": "@lrnwebcomponents/magazine-cover/magazine-cover.js",
+ "media-behaviors": "@lrnwebcomponents/media-behaviors/media-behaviors.js",
+ "media-image": "@lrnwebcomponents/media-image/media-image.js",
+ "meme-maker": "@lrnwebcomponents/meme-maker/meme-maker.js",
+ "grid-plate": "@lrnwebcomponents/grid-plate/grid-plate.js",
+ "md-block": "@lrnwebcomponents/md-block/md-block.js",
+ "multiple-choice": "@lrnwebcomponents/multiple-choice/multiple-choice.js",
+ "paper-audio-player": "@lrnwebcomponents/paper-audio-player/paper-audio-player.js",
+ "person-testimonial": "@lrnwebcomponents/person-testimonial/person-testimonial.js",
+ "place-holder": "@lrnwebcomponents/place-holder/place-holder.js",
+ "q-r": "@lrnwebcomponents/q-r/q-r.js",
+ "full-width-image": "@lrnwebcomponents/full-width-image/full-width-image.js",
+ "self-check": "@lrnwebcomponents/self-check/self-check.js",
+ "simple-concept-network": "@lrnwebcomponents/simple-concept-network/simple-concept-network.js",
+ "stop-note": "@lrnwebcomponents/stop-note/stop-note.js",
+ "tab-list": "@lrnwebcomponents/tab-list/tab-list.js",
+ "task-list": "@lrnwebcomponents/task-list/task-list.js",
+ "video-player": "@lrnwebcomponents/video-player/video-player.js",
+ "wave-player": "@lrnwebcomponents/wave-player/wave-player.js",
+ "wikipedia-query": "@lrnwebcomponents/wikipedia-query/wikipedia-query.js",
+ "lrndesign-gallery": "@lrnwebcomponents/lrndesign-gallery/lrndesign-gallery.js",
+ "lrndesign-timeline": "@lrnwebcomponents/lrndesign-timeline/lrndesign-timeline.js",
+ "html-block": "@lrnwebcomponents/html-block/html-block.js",
+ "user-action": "@lrnwebcomponents/user-action/user-action.js",
+ "rss-items": "@lrnwebcomponents/rss-items/rss-items.js"
+ },
+ "fields": {}
+ }
+ },
+ "items": [
+ {
+ "id": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "indent": "1",
+ "location": "pages/documentation-1/hax-development/index.html",
+ "slug": "documentation-1/hax-development",
+ "order": "0",
+ "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
+ "title": "HAX development",
+ "description": "Include HAX in your projectThe developers docs will lay out the many specifications that make HAX possible including core concepts, different schema's it leverages ad how to define app store spec in ",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-587de126-437b-4864-a3ea-54078837127c",
+ "indent": "1",
+ "location": "pages/item-587de126-437b-4864-a3ea-54078837127c/index.html",
+ "slug": "integrations-1/hax11ty",
+ "order": "0",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "HAX11ty",
+ "description": "HAX + 11ty = HAX11ty! HAX11ty gives you the best of SEO from 11ty while using the HAX editor and the HAXcms theme engine for presenting material. This gives you the SPA capabilities of fast loading r",
+ "metadata": {
+ "created": 1597690877,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 4,
+ "schema": [
+ {
+ "resource": "#d8a4a0fc-7cf5-800c-41cd-cdae27ae49c4",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
}
- },
- "node": {
- "dynamicElementLoader": {
- "h5p-element": "@lrnwebcomponents\/h5p-element\/h5p-element.js",
- "hax-logo": "@lrnwebcomponents\/hax-logo\/hax-logo.js",
- "a11y-gif-player": "@lrnwebcomponents\/a11y-gif-player\/a11y-gif-player.js",
- "code-sample": "@lrnwebcomponents\/code-sample\/code-sample.js",
- "citation-element": "@lrnwebcomponents\/citation-element\/citation-element.js",
- "hero-banner": "@lrnwebcomponents\/hero-banner\/hero-banner.js",
- "image-compare-slider": "@lrnwebcomponents\/image-compare-slider\/image-compare-slider.js",
- "license-element": "@lrnwebcomponents\/license-element\/license-element.js",
- "lrn-aside": "@lrnwebcomponents\/lrn-aside\/lrn-aside.js",
- "lrn-math": "@lrnwebcomponents\/lrn-math\/lrn-math.js",
- "lrn-table": "@lrnwebcomponents\/lrn-table\/lrn-table.js",
- "lrn-vocab": "@lrnwebcomponents\/lrn-vocab\/lrn-vocab.js",
- "lrndesign-blockquote": "@lrnwebcomponents\/lrndesign-blockquote\/lrndesign-blockquote.js",
- "magazine-cover": "@lrnwebcomponents\/magazine-cover\/magazine-cover.js",
- "media-behaviors": "@lrnwebcomponents\/media-behaviors\/media-behaviors.js",
- "media-image": "@lrnwebcomponents\/media-image\/media-image.js",
- "meme-maker": "@lrnwebcomponents\/meme-maker\/meme-maker.js",
- "grid-plate": "@lrnwebcomponents\/grid-plate\/grid-plate.js",
- "md-block": "@lrnwebcomponents\/md-block\/md-block.js",
- "multiple-choice": "@lrnwebcomponents\/multiple-choice\/multiple-choice.js",
- "paper-audio-player": "@lrnwebcomponents\/paper-audio-player\/paper-audio-player.js",
- "person-testimonial": "@lrnwebcomponents\/person-testimonial\/person-testimonial.js",
- "place-holder": "@lrnwebcomponents\/place-holder\/place-holder.js",
- "q-r": "@lrnwebcomponents\/q-r\/q-r.js",
- "full-width-image": "@lrnwebcomponents\/full-width-image\/full-width-image.js",
- "self-check": "@lrnwebcomponents\/self-check\/self-check.js",
- "simple-concept-network": "@lrnwebcomponents\/simple-concept-network\/simple-concept-network.js",
- "stop-note": "@lrnwebcomponents\/stop-note\/stop-note.js",
- "tab-list": "@lrnwebcomponents\/tab-list\/tab-list.js",
- "task-list": "@lrnwebcomponents\/task-list\/task-list.js",
- "video-player": "@lrnwebcomponents\/video-player\/video-player.js",
- "wave-player": "@lrnwebcomponents\/wave-player\/wave-player.js",
- "wikipedia-query": "@lrnwebcomponents\/wikipedia-query\/wikipedia-query.js",
- "lrndesign-gallery": "@lrnwebcomponents\/lrndesign-gallery\/lrndesign-gallery.js",
- "lrndesign-timeline": "@lrnwebcomponents\/lrndesign-timeline\/lrndesign-timeline.js",
- "html-block": "@lrnwebcomponents\/html-block\/html-block.js",
- "user-action": "@lrnwebcomponents\/user-action\/user-action.js",
- "rss-items": "@lrnwebcomponents\/rss-items\/rss-items.js"
- },
- "fields": {}
+ ],
+ "tags": {
+ "p": 4,
+ "video-player": 1
+ },
+ "elements": 5
}
+ }
},
- "items": [
- {
- "id": "item-534ed4c7-2468-366f-5410-adc169efcebc",
- "indent": "1",
- "location": "pages\/documentation-1\/hax-development\/index.html",
- "slug": "documentation-1\/hax-development",
- "order": "0",
- "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
- "title": "HAX development",
- "description": "Include HAX in your projectThe developers docs will lay out the many specifications that make HAX possible including core concepts, different schema's it leverages ad how to define app store spec in ",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490
- }
- },
- {
- "id": "item-587de126-437b-4864-a3ea-54078837127c",
- "indent": "1",
- "location": "pages\/item-587de126-437b-4864-a3ea-54078837127c\/index.html",
- "slug": "integrations-1\/hax11ty",
- "order": "0",
- "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
- "title": "HAX11ty",
- "description": "HAX + 11ty = HAX11ty! HAX11ty gives you the best of SEO from 11ty while using the HAX editor and the HAXcms theme engine for presenting material. This gives you the SPA capabilities of fast loading r",
- "metadata": {
- "created": 1597690877,
- "updated": 1617805490,
- "readtime": 1,
- "contentDetails": {
- "headings": 0,
- "paragraphs": 4,
- "schema": [
- {
- "resource": "#d8a4a0fc-7cf5-800c-41cd-cdae27ae49c4",
- "prefix": "oer:http:\/\/oerschema.org\/ schema:http:\/\/schema.org\/ dc:http:\/\/purl.org\/dc\/terms\/ foaf:http:\/\/xmlns.com\/foaf\/0.1\/ cc:http:\/\/creativecommons.org\/ns# bib:http:\/\/bib.schema.org "
- }
- ],
- "tags": {
- "p": 4,
- "video-player": 1
- },
- "elements": 5
- }
- }
- },
- {
- "id": "item-36c4fc60-67c0-43c2-8f71-c6a117e8b7d6",
- "indent": "4",
- "location": "pages\/documentation-1\/haxcms\/theming\/core-elements\/query-examples\/index.html",
- "slug": "documentation-1\/haxcms\/theming\/core-elements\/query-examples",
- "order": "0",
- "parent": "item-a84c35ec-85c8-4c7c-b4ab-80c2fbc87550",
- "title": "Query examples",
- "description": " Hold up there. You didn't cover any of the query tags in that last section!Ok ok, here's the deal. Queries are so important that they needed their own section. Calm down Dwight we'll handle that n",
- "metadata": {
- "created": 1553349518,
- "updated": 1617805490,
- "files": [
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/2019-03-23_10-51-10.jpg",
- "fullUrl": "\/_sites\/haxtheweb\/files\/2019-03-23_10-51-10.jpg",
- "url": "files\/2019-03-23_10-51-10.jpg",
- "type": "image\/jpeg",
- "name": "2019-03-23_10-51-10.jpg",
- "size": 54637
- }
- ]
- }
- },
- {
- "id": "item-asd7dab5-8208-65e3-c3e4-267f233f60553",
- "indent": "1",
- "location": "pages\/welcome\/what-is-hax\/index.html",
- "slug": "welcome\/what-is-hax",
- "order": "0",
- "parent": "item-welcome",
- "title": "What is HAX",
- "description": "HAX - Headless Authoring eXperienceHAX is a WYSIWYG unlike any other. You extend your world by extending the web through the web component standard. HAX has a simple schema and integrations to allow",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490,
- "files": [
- {
- "path": "\/var\/www\/html\/sites\/haxtheweb\/files\/\/sourceviewthispage.jpg",
- "fullUrl": "\/sites\/haxtheweb\/files\/sourceviewthispage.jpg",
- "url": "files\/sourceviewthispage.jpg",
- "type": "image\/jpeg",
- "name": "sourceviewthispage.jpg",
- "size": 34616
- }
- ],
- "readtime": 2,
- "contentDetails": {
- "headings": 4,
- "paragraphs": 8,
- "schema": [],
- "tags": {
- "full-width-image": 1,
- "h2": 4,
- "p": 8,
- "code-sample": 1,
- "meme-maker": 1,
- "ul": 1,
- "img": 1
- },
- "elements": 17
- }
- }
- },
- {
- "id": "item-692eb91c-4003-3429-5d9f-caac64691849",
- "indent": "2",
- "location": "pages\/documentation-1\/hax-development\/wcfactory-tooling\/index.html",
- "slug": "documentation-1\/hax-development\/wcfactory-tooling",
- "order": "0",
- "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
- "title": "WCFactory Tooling",
- "description": "",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490
- }
- },
- {
- "id": "item-welcome",
- "indent": 0,
- "location": "pages\/welcome\/index.html",
- "slug": "welcome",
- "order": "0",
- "parent": null,
- "title": "Our Mission",
- "description": "We're on a mission to empower the next billion creators to share their voice with the world and in doing so, create a less toxic web. Regardless of ability,\u00a0platform,tribe\u00a0or income.Will you he",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490,
- "files": [
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/demo.csv",
- "fullUrl": "\/_sites\/haxtheweb\/files\/demo.csv",
- "url": "files\/demo.csv",
- "type": "text\/plain",
- "name": "demo.csv",
- "size": 830
- },
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/demo.csv",
- "fullUrl": "\/_sites\/haxtheweb\/files\/demo.csv",
- "url": "files\/demo.csv",
- "type": "text\/plain",
- "name": "demo.csv",
- "size": 830
- },
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/ngdle.png",
- "fullUrl": "\/_sites\/haxtheweb\/files\/ngdle.png",
- "url": "files\/ngdle.png",
- "type": "image\/png",
- "name": "ngdle.png",
- "size": 307196
- }
- ],
- "readtime": 1,
- "contentDetails": {
- "headings": 6,
- "paragraphs": 10,
- "schema": [
- {
- "resource": "#18d556e9-a1d7-3069-81d9",
- "prefix": "oer:http:\/\/oerschema.org\/ schema:http:\/\/schema.org\/ dc:http:\/\/purl.org\/dc\/terms\/ foaf:http:\/\/xmlns.com\/foaf\/0.1\/ cc:http:\/\/creativecommons.org\/ns# bib:http:\/\/bib.schema.org "
- }
- ],
- "tags": {
- "p": 10,
- "h3": 6,
- "code-sample": 2,
- "ul": 2,
- "video-player": 1
- },
- "elements": 21
- },
- "published": true
- }
- },
- {
- "id": "item-96d00871-d866-c65e-b7f0-4e242bde5b15",
- "indent": "3",
- "location": "pages\/documentation-1\/hax-development\/hax-app-store\/apps\/index.html",
- "slug": "documentation-1\/hax-development\/hax-app-store\/apps",
- "order": "0",
- "parent": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
- "title": "apps",
- "description": "",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490
- }
- },
- {
- "id": "item-f0af8879-a79c-4d1c-afc4-e23c32f52dc4",
- "indent": "3",
- "location": "pages\/documentation-1\/haxcms\/theming\/css-vars\/index.html",
- "slug": "documentation-1\/haxcms\/theming\/css-vars",
- "order": "0",
- "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
- "title": "CSS vars",
- "description": "CSS can be modified via CSS variables. CSS variables create a happy middle ground between the constraints of Shadow DOM (namely that styles are fully encapsulated) and designers wanting flexibility a",
- "metadata": {
- "created": 1553349518,
- "updated": 1617805490
- }
- },
- {
- "id": "item-dfd62788-ba48-4051-a869-986e5956864f",
- "indent": "2",
- "location": "pages\/documentation-1\/haxcms\/concepts\/index.html",
- "slug": "documentation-1\/haxcms\/concepts",
- "order": "0",
- "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
- "title": "Concepts",
- "description": "HAXcms seeks to be a microsite generator and manager that doesn't require any command line in order to operate. HAXcms leverages HAX to give a best in class authoring experience while HAXcms seeks to",
- "metadata": {
- "created": 1550643005,
- "updated": 1617805490
- }
- },
- {
- "id": "item-e3dafe1a-1f50-1834-68f3-9f378e4ddda5",
- "indent": "2",
- "location": "pages\/documentation-1\/ux-concepts\/add\/index.html",
- "slug": "documentation-1\/ux-concepts\/add",
- "order": "0",
- "parent": "item-06233713-d866-3351-81da-841d3931144c",
- "title": "Add Content",
- "description": "Add Content\u00a0is how you create and add complex blocks to the HAX page editor. These blocks can be variable based on what you chose to include (see appstore) but ultimately are just adding web compon",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490,
- "files": [
- {
- "path": "\/var\/www\/html\/sites\/haxtheweb\/files\/Screenshot from 2020-08-17 14-34-32.png",
- "fullUrl": "\/sites\/haxtheweb\/files\/Screenshot from 2020-08-17 14-34-32.png",
- "url": "files\/Screenshot from 2020-08-17 14-34-32.png",
- "type": "image\/png",
- "name": "Screenshot from 2020-08-17 14-34-32.png",
- "size": 78391
- }
- ],
- "readtime": 1,
- "contentDetails": {
- "headings": 0,
- "paragraphs": 1,
- "schema": [],
- "tags": {
- "p": 1,
- "img": 1
- },
- "elements": 2
- }
- }
- },
- {
- "id": "item-275a0928-60ab-b7ce-c2b6-d0e35826498b",
- "indent": "1",
- "location": "pages\/documentation-1\/core-concepts\/index.html",
- "slug": "documentation-1\/core-concepts",
- "order": "1",
- "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
- "title": "Core concepts",
- "description": "",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490
- }
- },
- {
- "id": "item-39074718-758f-d51b-1dc5-15cfbb79e44c",
- "indent": "2",
- "location": "pages\/documentation-1\/hax-development\/hello-world-element\/index.html",
- "slug": "documentation-1\/hax-development\/hello-world-element",
- "order": "1",
- "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
- "title": "hello-world element",
- "description": "Let's see what goes into the element called @lrnwebcomponents\/example-hax-element\u00a0in order to learn how we can wire anything up to HAXeditor.@lrnwebcomponents\/example-hax-element\/example-hax-elem",
- "metadata": {
- "created": 1548826475,
- "updated": 1617806663,
- "readtime": 1,
- "contentDetails": {
- "headings": 1,
- "paragraphs": 1,
- "schema": [],
- "tags": {
- "p": 1,
- "h2": 1,
- "code-sample": 1
- },
- "elements": 3
- }
- }
- },
- {
- "id": "item-650eaa59-478c-4674-8ef3-93e4b43e2310",
- "indent": "1",
- "location": "pages\/welcome\/why-haxcms-1\/index.html",
- "slug": "welcome\/why-haxcms-1",
- "order": "1",
- "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
- "title": "HAXcms",
- "description": "HAXcms powers this website and is a hybrid static site generator, a new class of CMS. It's hybrid in that everything is written to static like a static site generator and it's 100% decoupled via web ",
- "metadata": {
- "created": 1563972322,
- "updated": 1617805490,
- "readtime": 2,
- "contentDetails": {
- "headings": 6,
- "paragraphs": 5,
- "schema": [
- {
- "typeof": "oer:Assessment",
- "resource": "#dd2feacf-ed4a-dcb0-b85d",
- "prefix": "oer:http:\/\/oerschema.org\/ schema:http:\/\/schema.org\/ dc:http:\/\/purl.org\/dc\/terms\/ foaf:http:\/\/xmlns.com\/foaf\/0.1\/ cc:http:\/\/creativecommons.org\/ns# bib:http:\/\/bib.schema.org "
- }
- ],
- "tags": {
- "grid-plate": 1,
- "h2": 2,
- "ul": 3,
- "p": 5,
- "h4": 4,
- "img": 1,
- "multiple-choice": 1
- },
- "elements": 17
- }
- }
- },
- {
- "id": "item-5a6e6643-3834-4ac5-ae70-0090263759cb",
- "indent": "2",
- "location": "pages\/documentation-1\/haxcms\/installation\/index.html",
- "slug": "documentation-1\/haxcms\/installation",
- "order": "1",
- "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
- "title": "Installation",
- "description": "Generic PHP install directionsHave PHP? well then you can setup HAXcms pretty quick. Just download HAXcms and navigate to its directory in a browser. It'll attempt to automatically install (which is ",
- "metadata": {
- "created": 1550643005,
- "updated": 1617805490,
- "files": [
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/mampstructure.jpg",
- "fullUrl": "\/_sites\/haxtheweb\/files\/mampstructure.jpg",
- "url": "files\/mampstructure.jpg",
- "type": "image\/jpeg",
- "name": "mampstructure.jpg",
- "size": 15099
- },
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/mampstart.jpg",
- "fullUrl": "\/_sites\/haxtheweb\/files\/mampstart.jpg",
- "url": "files\/mampstart.jpg",
- "type": "image\/jpeg",
- "name": "mampstart.jpg",
- "size": 12670
- },
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/mamppage.jpg",
- "fullUrl": "\/_sites\/haxtheweb\/files\/mamppage.jpg",
- "url": "files\/mamppage.jpg",
- "type": "image\/jpeg",
- "name": "mamppage.jpg",
- "size": 17086
- }
- ],
- "readtime": 2,
- "contentDetails": {
- "headings": 6,
- "paragraphs": 13,
- "schema": [
- {
- "resource": "#990ebe5c-04c8-58b2-385a",
- "prefix": "oer:http:\/\/oerschema.org\/ schema:http:\/\/schema.org\/ dc:http:\/\/purl.org\/dc\/terms\/ foaf:http:\/\/xmlns.com\/foaf\/0.1\/ cc:http:\/\/creativecommons.org\/ns# bib:http:\/\/bib.schema.org "
- },
- {
- "resource": "#4e5cac2b-786f-596c-b394",
- "prefix": "oer:http:\/\/oerschema.org\/ schema:http:\/\/schema.org\/ dc:http:\/\/purl.org\/dc\/terms\/ foaf:http:\/\/xmlns.com\/foaf\/0.1\/ cc:http:\/\/creativecommons.org\/ns# bib:http:\/\/bib.schema.org "
- }
- ],
- "tags": {
- "h2": 4,
- "p": 13,
- "code-sample": 2,
- "h3": 2,
- "media-image": 2,
- "img": 1,
- "ul": 1
- },
- "elements": 25
- }
- }
- },
- {
- "id": "item-a91393ea-31f8-30bd-888f-275a05e08e0a",
- "indent": "3",
- "location": "pages\/documentation-1\/hax-development\/hax-app-store\/blox\/index.html",
- "slug": "documentation-1\/hax-development\/hax-app-store\/blox",
- "order": "1",
- "parent": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
- "title": "blox",
- "description": "",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490
- }
- },
- {
- "id": "item-504d6323-873d-49e3-9de0-ffa56c28fdf5",
- "indent": "1",
- "location": "pages\/get-involved-1\/index.html",
- "slug": "get-involved-1",
- "order": "1",
- "parent": "item-welcome",
- "title": "Get Involved!",
- "description": "Join our communityJoin us on the\u00a0HAXTheWeb Slack\u00a0channelJoin us for\u00a0HAXcamp Un-code every Friday 3 pm - 5 pm (EST)Follow \/ use the #HAXTheWeb hash tagJoin our projectsHAXcms - That which ",
- "metadata": {
- "created": 1553197584,
- "updated": 1617805490,
- "readtime": 2,
- "contentDetails": {
- "headings": 3,
- "paragraphs": 6,
- "schema": [],
- "tags": {
- "h2": 3,
- "ul": 3,
- "p": 6,
- "meme-maker": 1
- },
- "elements": 13
- }
- }
- },
- {
- "id": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
- "indent": 0,
- "location": "pages\/integrations-1\/index.html",
- "slug": "integrations-1",
- "order": "1",
- "parent": null,
- "title": "Integrations",
- "description": "HAX provides plenty of ways to integrate into the platforms you already use! Here are some of the plugins and integrations below this heading.Some things a liittle bit crazyCode Pen?!Demonstration",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490,
- "readtime": 1,
- "contentDetails": {
- "headings": 1,
- "paragraphs": 1,
- "schema": [],
- "tags": {
- "p": 1,
- "h2": 1,
- "ul": 1
- },
- "elements": 3
- }
- }
- },
- {
- "id": "item-3859b3ac-1ef5-45b4-909c-3892f97a9f4c",
- "indent": "3",
- "location": "pages\/documentation-1\/haxcms\/theming\/skin-a-site\/index.html",
- "slug": "documentation-1\/haxcms\/theming\/skin-a-site",
- "order": "1",
- "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
- "title": "Skin a site",
- "description": "Theme skinning is the easiest way to build a decent looking theme in HAXcms. This method is geared toward people that know CSS and HTML but can't get into the weeds of web components or javascript.Wo",
- "metadata": {
- "created": 1553354507,
- "updated": 1617805490
- }
- },
- {
- "id": "item-eca7c8a4-393a-4e68-8cb4-440e94683738",
- "indent": "2",
- "location": "pages\/item-eca7c8a4-393a-4e68-8cb4-440e94683738\/index.html",
- "slug": "documentation-1\/ux-concepts\/block-settings",
- "order": "1",
- "parent": "item-06233713-d866-3351-81da-841d3931144c",
- "title": "Block settings",
- "description": "Block settings will change contextually based on which block has been selected in the editable area of the page. In this screenshot, a paragraph has been selected and so the icon associated with it is",
- "metadata": {
- "created": 1597689709,
- "updated": 1617805490,
- "files": [
- {
- "path": "\/var\/www\/html\/sites\/haxtheweb\/files\/Screenshot from 2020-08-17 14-42-07.png",
- "fullUrl": "\/sites\/haxtheweb\/files\/Screenshot from 2020-08-17 14-42-07.png",
- "url": "files\/Screenshot from 2020-08-17 14-42-07.png",
- "type": "image\/png",
- "name": "Screenshot from 2020-08-17 14-42-07.png",
- "size": 46191
- },
- {
- "path": "\/var\/www\/html\/sites\/haxtheweb\/files\/Screenshot from 2020-08-17 14-46-06.png",
- "fullUrl": "\/sites\/haxtheweb\/files\/Screenshot from 2020-08-17 14-46-06.png",
- "url": "files\/Screenshot from 2020-08-17 14-46-06.png",
- "type": "image\/png",
- "name": "Screenshot from 2020-08-17 14-46-06.png",
- "size": 66054
- }
- ],
- "readtime": 1,
- "contentDetails": {
- "headings": 2,
- "paragraphs": 2,
- "schema": [],
- "tags": {
- "p": 2,
- "h2": 2,
- "img": 2
- },
- "elements": 6
- }
- }
- },
- {
- "id": "item-44a138ea-5122-4a2b-b2ce-8bf1fb11bb29",
- "indent": "2",
- "location": "pages\/documentation-1\/haxcms\/structure\/index.html",
- "slug": "documentation-1\/haxcms\/structure",
- "order": "2",
- "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
- "title": "Structure",
- "description": "By design we've got a very simple structure. The goal of HAXcms isn't to lock you into anything and so we've simplified our file structure over other solutions.The key directories \/ files include:fi",
- "metadata": {
- "created": 1550643005,
- "updated": 1617805490,
- "files": [
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/2019-02-20_01-26-01.png",
- "fullUrl": "\/_sites\/haxtheweb\/files\/2019-02-20_01-26-01.png",
- "url": "files\/2019-02-20_01-26-01.png",
- "type": "image\/png",
- "name": "2019-02-20_01-26-01.png",
- "size": 19448
- },
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/2019-02-20_01-26-10.png",
- "fullUrl": "\/_sites\/haxtheweb\/files\/2019-02-20_01-26-10.png",
- "url": "files\/2019-02-20_01-26-10.png",
- "type": "image\/png",
- "name": "2019-02-20_01-26-10.png",
- "size": 59026
- },
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/2019-02-25_16-22-25.png",
- "fullUrl": "\/_sites\/haxtheweb\/files\/2019-02-25_16-22-25.png",
- "url": "files\/2019-02-25_16-22-25.png",
- "type": "image\/png",
- "name": "2019-02-25_16-22-25.png",
- "size": 37234
- }
- ]
- }
- },
- {
- "id": "item-f1c8e3a4-eddb-806a-8a3a-206c1e33f7a9",
- "indent": "2",
- "location": "pages\/documentation-1\/hax-development\/hax-schema\/index.html",
- "slug": "documentation-1\/hax-development\/hax-schema",
- "order": "2",
- "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
- "title": "HAX schema",
- "description": "Implementing HAXSchemaIn order for your element to talk to the HAX editor, you need to implement static get haxProperties() on your element. This callback either returns a String based location of ",
- "metadata": {
- "created": 1548826475,
- "updated": 1617979979,
- "readtime": 5,
- "contentDetails": {
- "headings": 6,
- "paragraphs": 7,
- "schema": [],
- "tags": {
- "h2": 5,
- "p": 7,
- "ul": 1,
- "code-sample": 5,
- "h3": 1,
- "grid-plate": 1,
- "img": 3
- },
- "elements": 23
- }
- }
- },
- {
- "id": "item-29e7d7f5-db3e-3ef0-733a-ed41d88f2835",
- "indent": "1",
- "location": "pages\/welcome\/solutions\/index.html",
- "slug": "welcome\/solutions",
- "order": "2",
- "parent": "item-welcome",
- "title": "Solutions",
- "description": "Modularity is key to HAX success. Here are some of the solutions that HAX provides which leverage the HAXeditor interface.HAX editorHAX or HAXeditor is the editor of the future you're using in this ",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490,
- "readtime": 2,
- "contentDetails": {
- "headings": 4,
- "paragraphs": 9,
- "schema": [
- {
- "resource": "#832335f3-7442-7d40-0d56",
- "prefix": "oer:http:\/\/oerschema.org\/ schema:http:\/\/schema.org\/ dc:http:\/\/purl.org\/dc\/terms\/ foaf:http:\/\/xmlns.com\/foaf\/0.1\/ cc:http:\/\/creativecommons.org\/ns# bib:http:\/\/bib.schema.org "
- }
- ],
- "tags": {
- "p": 9,
- "h2": 3,
- "h3": 1,
- "media-image": 1
- },
- "elements": 14
- },
- "published": true
- }
- },
- {
- "id": "item-17449951-7504-468a-b315-4388b85c00e3",
- "indent": "3",
- "location": "pages\/documentation-1\/haxcms\/theming\/web-components\/index.html",
- "slug": "documentation-1\/haxcms\/theming\/web-components",
- "order": "2",
- "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
- "title": "Web components",
- "description": "Do you know full on web component development? Well, you can build a new theme from scratch. The best way to learn is by picking a part some of our examples. For this we'll analyze the haxcms-slide-th",
- "metadata": {
- "created": 1553349518,
- "updated": 1617805490
- }
- },
- {
- "id": "item-5a9ea17e-63ce-96f3-e94f-d5282b290661",
- "indent": "1",
- "location": "pages\/integrations-1\/wordpress\/index.html",
- "slug": "integrations-1\/wordpress",
- "order": "2",
- "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
- "title": "WordPress",
- "description": "We support WordPress too! In order to use HAX though you'll want to replace the Gutenberg editor. The following steps will help you get it up and running.Get the Classic Editor. This plugin helps re",
- "metadata": {
- "created": 1549428503,
- "updated": 1617805490,
- "readtime": 1,
- "contentDetails": {
- "headings": 0,
- "paragraphs": 1,
- "schema": [],
- "tags": {
- "p": 1,
- "ol": 1
- },
- "elements": 2
- }
- }
- },
- {
- "id": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
- "indent": 0,
- "location": "pages\/documentation-1\/index.html",
- "slug": "documentation-1",
- "order": "2",
- "parent": null,
- "title": "Documentation",
- "description": "HAX may seem complex, but it's built on a series of standards that will never break. As a result of the complexity of these standards, there are things you should know prior to digging into HAXedito",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490,
- "readtime": 1,
- "files": [
- {
- "path": "\/var\/www\/html\/sites\/haxtheweb\/files\/3450183.png",
- "fullUrl": "\/sites\/haxtheweb\/files\/3450183.png",
- "url": "files\/3450183.png",
- "type": "image\/png",
- "name": "3450183.png",
- "size": 9992
- }
- ],
- "contentDetails": {
- "headings": 1,
- "paragraphs": 3,
- "schema": [
- {
- "resource": "#5749cf56-70cf-cf6f-508a-b3bc12320734",
- "prefix": "oer:http:\/\/oerschema.org\/ schema:http:\/\/schema.org\/ dc:http:\/\/purl.org\/dc\/terms\/ foaf:http:\/\/xmlns.com\/foaf\/0.1\/ cc:http:\/\/creativecommons.org\/ns# bib:http:\/\/bib.schema.org "
- }
- ],
- "tags": {
- "p": 3,
- "h2": 1,
- "video-player": 1
- },
- "elements": 5
- }
- }
- },
- {
- "id": "item-faaa1198-10c7-ff30-ece6-01b30a9c0f85",
- "indent": "3",
- "location": "pages\/documentation-1\/hax-development\/hax-app-store\/stax\/index.html",
- "slug": "documentation-1\/hax-development\/hax-app-store\/stax",
- "order": "2",
- "parent": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
- "title": "stax",
- "description": "Stax are what most WYSIWYG systems would call Templates. Stax in HAX are a series of HAX element schema's in succession.Below is a definition for the \"example lesson\" seen above. This is a larger ex",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490,
- "readtime": 4
- }
- },
- {
- "id": "item-251f207e-4046-a4b0-40ce-7c28fe38ae23",
- "indent": "2",
- "location": "pages\/documentation-1\/ux-concepts\/find\/index.html",
- "slug": "documentation-1\/ux-concepts\/find",
- "order": "2",
- "parent": "item-06233713-d866-3351-81da-841d3931144c",
- "title": "Search",
- "description": "Search is a data interoperability layer to HAX where web components data binding shines. Search is able to stitch remote data together with local web components in order to streamline workflows. You ",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490,
- "published": true,
- "files": [
- {
- "path": "\/var\/www\/html\/sites\/haxtheweb\/files\/Screenshot from 2020-08-17 14-36-15.png",
- "fullUrl": "\/sites\/haxtheweb\/files\/Screenshot from 2020-08-17 14-36-15.png",
- "url": "files\/Screenshot from 2020-08-17 14-36-15.png",
- "type": "image\/png",
- "name": "Screenshot from 2020-08-17 14-36-15.png",
- "size": 135869
- },
- {
- "path": "\/var\/www\/html\/sites\/haxtheweb\/files\/Screenshot from 2020-08-17 14-43-47.png",
- "fullUrl": "\/sites\/haxtheweb\/files\/Screenshot from 2020-08-17 14-43-47.png",
- "url": "files\/Screenshot from 2020-08-17 14-43-47.png",
- "type": "image\/png",
- "name": "Screenshot from 2020-08-17 14-43-47.png",
- "size": 105778
- }
- ],
- "readtime": 1,
- "contentDetails": {
- "headings": 0,
- "paragraphs": 1,
- "schema": [],
- "tags": {
- "p": 1,
- "img": 1
- },
- "elements": 2
- }
- }
- },
- {
- "id": "item-06233713-d866-3351-81da-841d3931144c",
- "indent": "1",
- "location": "pages\/documentation-1\/ux-concepts\/index.html",
- "slug": "documentation-1\/ux-concepts",
- "order": "2",
- "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
- "title": "UX concepts",
- "description": "The HAX UI can be broken down into three major production concepts. Content authors are either:Adding something they already haveEditing the Settings of the activated element on the pageSearch for ",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490,
- "readtime": 1,
- "contentDetails": {
- "headings": 0,
- "paragraphs": 1,
- "schema": [],
- "tags": {
- "p": 1,
- "ol": 1
- },
- "elements": 2
- }
- }
- },
- {
- "id": "item-0e4cc53c-944f-658a-5440-eacc5a1c0358",
- "indent": "1",
- "location": "pages\/documentation-1\/related-technologies\/index.html",
- "slug": "documentation-1\/related-technologies",
- "order": "3",
- "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
- "title": "Related technologies",
- "description": "",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490
- }
- },
- {
- "id": "item-a839d5c1-3321-a395-c032-4ea8ea2cfa27",
- "indent": "3",
- "location": "pages\/documentation-1\/hax-development\/hax-app-store\/autoloader\/index.html",
- "slug": "documentation-1\/hax-development\/hax-app-store\/autoloader",
- "order": "3",
- "parent": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
- "title": "autoloader",
- "description": "Autoloader is waaayyy easier to implement then the other parts of the appstore spec and is probably the most important as it loads all the elements that will be available to your users. All it is is a",
- "metadata": {
- "created": 1548826475,
- "updated": 1617979603,
- "readtime": 2,
- "contentDetails": {
- "headings": 4,
- "paragraphs": 5,
- "schema": [],
- "tags": {
- "p": 5,
- "ol": 1,
- "h3": 1,
- "code-sample": 1,
- "h4": 3
- },
- "elements": 11
- }
- }
- },
- {
- "id": "item-aa589faa-e860-4221-82fa-df6d57328ac2",
- "indent": "2",
- "location": "pages\/item-aa589faa-e860-4221-82fa-df6d57328ac2\/index.html",
- "slug": "documentation-1\/ux-concepts\/templates-and-layouts",
- "order": "3",
- "parent": "item-06233713-d866-3351-81da-841d3931144c",
- "title": "Templates and Layouts",
- "description": "Templates and layouts allow you to drop in pre-built pieces of content structure. This might be a series of images or an example of content that could be written.",
- "metadata": {
- "created": 1597689709,
- "updated": 1617805490,
- "readtime": 1,
- "contentDetails": {
- "headings": 0,
- "paragraphs": 1,
- "schema": [],
- "tags": {
- "p": 1,
- "img": 1
- },
- "elements": 2
- }
- }
- },
- {
- "id": "item-a84c35ec-85c8-4c7c-b4ab-80c2fbc87550",
- "indent": "3",
- "location": "pages\/documentation-1\/haxcms\/theming\/core-elements\/index.html",
- "slug": "documentation-1\/haxcms\/theming\/core-elements",
- "order": "3",
- "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
- "title": "Core elements",
- "description": "While you're not required to use them, HAXcms supplies a series of elements that can make theme development effortless. You can see the source of these in greater detail under the theme directory of h",
- "metadata": {
- "created": 1552437937,
- "updated": 1617805490,
- "files": [
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/2019-03-12_16-45-51.png",
- "fullUrl": "\/_sites\/haxtheweb\/files\/2019-03-12_16-45-51.png",
- "url": "files\/2019-03-12_16-45-51.png",
- "type": "image\/png",
- "name": "2019-03-12_16-45-51.png",
- "size": 212153
- }
- ]
- }
- },
- {
- "id": "item-49d727fb-b5c8-871a-3979-a5143116946d",
- "indent": 0,
- "location": "pages\/f-a-q-1\/index.html",
- "slug": "f-a-q-1",
- "order": "3",
- "parent": null,
- "title": "F.A.Q.",
- "description": "Are web components ready for prime time?Yes. Web components effectively\u00a0turn the HTML of a site into a consistent API. HAXeditor leverages this approach and standardizes its usage in order to suppl",
- "metadata": {
- "created": 1548826475,
- "updated": 1617806639,
- "files": [
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/pubwork1.jpg",
- "fullUrl": "\/_sites\/haxtheweb\/files\/pubwork1.jpg",
- "url": "files\/pubwork1.jpg",
- "type": "image\/jpeg",
- "name": "pubwork1.jpg",
- "size": 51662
- },
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/IMG_20190127_153429.jpg",
- "fullUrl": "\/_sites\/haxtheweb\/files\/IMG_20190127_153429.jpg",
- "url": "files\/IMG_20190127_153429.jpg",
- "type": "image\/jpeg",
- "name": "IMG_20190127_153429.jpg",
- "size": 27242
- }
- ],
- "readtime": 5,
- "contentDetails": {
- "headings": 6,
- "paragraphs": 11,
- "schema": [],
- "tags": {
- "h2": 6,
- "p": 11,
- "ul": 3
- },
- "elements": 20
- },
- "published": true
- }
- },
- {
- "id": "item-ca8c6ba8-c012-8ace-343a-3701f20609e9",
- "indent": "1",
- "location": "pages\/integrations-1\/drupal\/index.html",
- "slug": "integrations-1\/drupal",
- "order": "3",
- "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
- "title": "Drupal",
- "description": "Try on SimplyTest.meTry HAX on Simplytest me in a few steps without needing to install anythingGo to Simplytest me and pick HAX modulePick 9.x,8.x or 7.xLog in, go to Administration -> Configurat",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490,
- "files": [
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/scale-50\/d8cdnimage.jpg",
- "fullUrl": "\/_sites\/haxtheweb\/files\/scale-50\/d8cdnimage.jpg",
- "url": "files\/scale-50\/d8cdnimage.jpg",
- "type": "image\/jpeg",
- "name": "d8cdnimage.jpg",
- "size": 136928
- },
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/scale-50\/haxd8simply.jpg",
- "fullUrl": "\/_sites\/haxtheweb\/files\/scale-50\/haxd8simply.jpg",
- "url": "files\/scale-50\/haxd8simply.jpg",
- "type": "image\/jpeg",
- "name": "haxd8simply.jpg",
- "size": 91967
- }
- ],
- "readtime": 1,
- "contentDetails": {
- "headings": 3,
- "paragraphs": 3,
- "schema": [
- {
- "resource": "#3b994c7f-952f-e85f-48b3",
- "prefix": "oer:http:\/\/oerschema.org\/ schema:http:\/\/schema.org\/ dc:http:\/\/purl.org\/dc\/terms\/ foaf:http:\/\/xmlns.com\/foaf\/0.1\/ cc:http:\/\/creativecommons.org\/ns# bib:http:\/\/bib.schema.org "
- }
- ],
- "tags": {
- "h2": 2,
- "p": 3,
- "ol": 2,
- "grid-plate": 1,
- "h3": 1,
- "wikipedia-query": 1
- },
- "elements": 10
- }
- }
- },
- {
- "id": "item-01e0f49a-190a-4c8d-ae0e-83d62675e070",
- "indent": "1",
- "location": "pages\/welcome\/roadmap-1\/index.html",
- "slug": "welcome\/roadmap-1",
- "order": "3",
- "parent": "item-welcome",
- "title": "Roadmap",
- "description": "HAX encompasses many different projectsThis roadmap illustrates all the projects related to HAX and ELMS:LN, which HAX comes from. The little settings gears found throughout illustrate enhancements a",
- "metadata": {
- "created": 1565290387,
- "updated": 1617805490,
- "files": [
- {
- "path": "\/var\/www\/html\/sites\/haxtheweb\/files\/\/haxrelationships.jpg",
- "fullUrl": "\/sites\/haxtheweb\/files\/haxrelationships.jpg",
- "url": "files\/haxrelationships.jpg",
- "type": "image\/jpeg",
- "name": "haxrelationships.jpg",
- "size": 88416
- },
- {
- "path": "\/var\/www\/html\/sites\/haxtheweb\/files\/\/Roadmap.jpg",
- "fullUrl": "\/sites\/haxtheweb\/files\/Roadmap.jpg",
- "url": "files\/Roadmap.jpg",
- "type": "image\/jpeg",
- "name": "Roadmap.jpg",
- "size": 108725
- },
- {
- "path": "\/var\/www\/html\/sites\/haxtheweb\/files\/headshot272229.61999999825.jpg",
- "fullUrl": "\/sites\/haxtheweb\/files\/headshot272229.61999999825.jpg",
- "url": "files\/headshot272229.61999999825.jpg",
- "type": "image\/jpeg",
- "name": "headshot272229.61999999825.jpg",
- "size": 121898
- }
- ],
- "readtime": 1,
- "contentDetails": {
- "headings": 2,
- "paragraphs": 6,
- "schema": [],
- "tags": {
- "h3": 2,
- "p": 6,
- "img": 2
- },
- "elements": 10
- }
- }
- },
- {
- "id": "item-5df45272-f6b9-4f4f-b650-16c47aeac6fb",
- "indent": "2",
- "location": "pages\/documentation-1\/haxcms\/publishing\/index.html",
- "slug": "documentation-1\/haxcms\/publishing",
- "order": "3",
- "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
- "title": "Publishing",
- "description": "HAXcms requires being published in order to be visible to other people. Working locally or on Desktop or on a server, is akin to you writing a document on your computer. It's not shared with anyone. W",
- "metadata": {
- "created": 1550643005,
- "updated": 1617805490,
- "files": [
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/gitpublishingdata.jpg",
- "fullUrl": "\/_sites\/haxtheweb\/files\/gitpublishingdata.jpg",
- "url": "files\/gitpublishingdata.jpg",
- "type": "image\/jpeg",
- "name": "gitpublishingdata.jpg",
- "size": 12847
- },
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/pubwork1.jpg",
- "fullUrl": "\/_sites\/haxtheweb\/files\/pubwork1.jpg",
- "url": "files\/pubwork1.jpg",
- "type": "image\/jpeg",
- "name": "pubwork1.jpg",
- "size": 51662
- },
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/pubwork2.jpg",
- "fullUrl": "\/_sites\/haxtheweb\/files\/pubwork2.jpg",
- "url": "files\/pubwork2.jpg",
- "type": "image\/jpeg",
- "name": "pubwork2.jpg",
- "size": 70772
- }
- ]
- }
- },
- {
- "id": "item-44cc230b-07db-442a-90cf-687e2d089a5d",
- "indent": "2",
- "location": "pages\/item-44cc230b-07db-442a-90cf-687e2d089a5d\/index.html",
- "slug": "haxhooks",
- "order": "3",
- "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
- "title": "haxHooks",
- "description": "Elements can integrate deeply into HAX state management using what we call \"hax hooks\". By supplying a method on your web component like haxHooks()\u00a0you are magically able to tap into different li",
- "metadata": {
- "created": 1617802345,
- "updated": 1617805490,
- "readtime": 5,
- "contentDetails": {
- "headings": 10,
- "paragraphs": 11,
- "schema": [],
- "tags": {
- "p": 11,
- "h2": 2,
- "ul": 2,
- "code-sample": 1,
- "h3": 8
- },
- "elements": 24
- }
- }
- },
- {
- "id": "item-c86470aa-0295-4c9d-9f17-48ad79ab05be",
- "indent": "1",
- "location": "pages\/welcome\/presentations\/index.html",
- "slug": "welcome\/presentations",
- "order": "4",
- "parent": "item-welcome",
- "title": "Presentations",
- "description": "This is the youtube playlist of all things HAXTheWebThis playlist is updated on a regular basis so make sure to subscribe to the youtube channel for updates. There's also many other playlists relat",
- "metadata": {
- "created": 1552910817,
- "updated": 1617805490,
- "readtime": 1,
- "contentDetails": {
- "headings": 0,
- "paragraphs": 2,
- "schema": [],
- "tags": {
- "p": 2,
- "iframe": 1
- },
- "elements": 3
- }
- }
- },
- {
- "id": "item-4824986b-1897-568d-fdd9-4b882ea6ee1f",
- "indent": "1",
- "location": "pages\/integrations-1\/backdropcms\/index.html",
- "slug": "integrations-1\/backdropcms",
- "order": "4",
- "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
- "title": "BackdropCMS",
- "description": "Getting HAX setup in BackdropCMSSearch for HAX on BackdropCMS.org\u00a0or from within your Backdrop siteFollow the instructions in the Web components module README\u00a0for buildingDon't worry, HAX requ",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490,
- "readtime": 1,
- "contentDetails": {
- "headings": 1,
- "paragraphs": 1,
- "schema": [
- {
- "resource": "#5b790bef-7d78-f85e-104d",
- "prefix": "oer:http:\/\/oerschema.org\/ schema:http:\/\/schema.org\/ dc:http:\/\/purl.org\/dc\/terms\/ foaf:http:\/\/xmlns.com\/foaf\/0.1\/ cc:http:\/\/creativecommons.org\/ns# bib:http:\/\/bib.schema.org "
- }
- ],
- "tags": {
- "p": 1,
- "h2": 1,
- "ol": 1,
- "media-image": 1
- },
- "elements": 4
- }
- }
- },
- {
- "id": "item-7ab2e2fd-622f-4a0f-9967-599410c6cd43",
- "indent": 0,
- "location": "pages\/scavenger-hunt-1\/index.html",
- "slug": "scavenger-hunt-1",
- "order": "4",
- "parent": null,
- "title": "Scavenger Hunt",
- "description": "Become part of our dynasty franchise **by wearing a cool jerseyWe're building the greatest roster of people ever to HAX the complacency of our industry. Take the HAX scavenger hunt at the next ev",
- "metadata": {
- "created": 1563970537,
- "updated": 1617805490,
- "readtime": 1,
- "contentDetails": {
- "headings": 1,
- "paragraphs": 2,
- "schema": [
- {
- "typeof": "oer:SupportingMaterial",
- "resource": "#238ee75a-de4d-02a9-3755",
- "prefix": "oer:http:\/\/oerschema.org\/ schema:http:\/\/schema.org\/ dc:http:\/\/purl.org\/dc\/terms\/ foaf:http:\/\/xmlns.com\/foaf\/0.1\/ cc:http:\/\/creativecommons.org\/ns# bib:http:\/\/bib.schema.org "
- }
- ],
- "tags": {
- "h3": 1,
- "p": 2,
- "ul": 1,
- "task-list": 1,
- "meme-maker": 1
- },
- "elements": 6
- }
- }
- },
- {
- "id": "item-7f3dd690-4c3f-4616-baa5-159b9a15809c",
- "indent": "3",
- "location": "pages\/documentation-1\/haxcms\/theming\/dev-workflows\/index.html",
- "slug": "documentation-1\/haxcms\/theming\/dev-workflows",
- "order": "4",
- "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
- "title": "Dev workflows",
- "description": "Our development workflow is as follows (for themes)All custom theme work happens in your _config directoryMake my-theme.js, pull everything together, either in this directory or in a wcfactory cat",
- "metadata": {
- "created": 1553349518,
- "updated": 1617805490
+ {
+ "id": "item-36c4fc60-67c0-43c2-8f71-c6a117e8b7d6",
+ "indent": "4",
+ "location": "pages/documentation-1/haxcms/theming/core-elements/query-examples/index.html",
+ "slug": "documentation-1/haxcms/theming/core-elements/query-examples",
+ "order": "0",
+ "parent": "item-a84c35ec-85c8-4c7c-b4ab-80c2fbc87550",
+ "title": "Query examples",
+ "description": " Hold up there. You didn't cover any of the query tags in that last section!Ok ok, here's the deal. Queries are so important that they needed their own section. Calm down Dwight we'll handle that n",
+ "metadata": {
+ "created": 1553349518,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/2019-03-23_10-51-10.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/2019-03-23_10-51-10.jpg",
+ "url": "files/2019-03-23_10-51-10.jpg",
+ "type": "image/jpeg",
+ "name": "2019-03-23_10-51-10.jpg",
+ "size": 54637
+ }
+ ]
+ }
+ },
+ {
+ "id": "item-asd7dab5-8208-65e3-c3e4-267f233f60553",
+ "indent": "1",
+ "location": "pages/welcome/what-is-hax/index.html",
+ "slug": "welcome/what-is-hax",
+ "order": "0",
+ "parent": "item-welcome",
+ "title": "What is HAX",
+ "description": "HAX - Headless Authoring eXperienceHAX is a WYSIWYG unlike any other. You extend your world by extending the web through the web component standard. HAX has a simple schema and integrations to allow",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/sites/haxtheweb/files//sourceviewthispage.jpg",
+ "fullUrl": "/sites/haxtheweb/files/sourceviewthispage.jpg",
+ "url": "files/sourceviewthispage.jpg",
+ "type": "image/jpeg",
+ "name": "sourceviewthispage.jpg",
+ "size": 34616
+ }
+ ],
+ "readtime": 2,
+ "contentDetails": {
+ "headings": 4,
+ "paragraphs": 8,
+ "schema": [],
+ "tags": {
+ "full-width-image": 1,
+ "h2": 4,
+ "p": 8,
+ "code-sample": 1,
+ "meme-maker": 1,
+ "ul": 1,
+ "img": 1
+ },
+ "elements": 17
+ }
+ }
+ },
+ {
+ "id": "item-692eb91c-4003-3429-5d9f-caac64691849",
+ "indent": "2",
+ "location": "pages/documentation-1/hax-development/wcfactory-tooling/index.html",
+ "slug": "documentation-1/hax-development/wcfactory-tooling",
+ "order": "0",
+ "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "title": "WCFactory Tooling",
+ "description": "",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-welcome",
+ "indent": 0,
+ "location": "pages/welcome/index.html",
+ "slug": "welcome",
+ "order": 0,
+ "parent": null,
+ "title": "Our Mission",
+ "description": "We're on a mission to empower the next billion creators to share their voice with the world and in doing so, create a less toxic web. Regardless offfff ability, platform,tribe or income",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1661452015,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/demo.csv",
+ "fullUrl": "/_sites/haxtheweb/files/demo.csv",
+ "url": "files/demo.csv",
+ "type": "text/plain",
+ "name": "demo.csv",
+ "size": 830
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/demo.csv",
+ "fullUrl": "/_sites/haxtheweb/files/demo.csv",
+ "url": "files/demo.csv",
+ "type": "text/plain",
+ "name": "demo.csv",
+ "size": 830
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/ngdle.png",
+ "fullUrl": "/_sites/haxtheweb/files/ngdle.png",
+ "url": "files/ngdle.png",
+ "type": "image/png",
+ "name": "ngdle.png",
+ "size": 307196
+ }
+ ],
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 2,
+ "paragraphs": 6,
+ "schema": [
+ {
+ "resource": "#13f8e41a-3150-15b2-162c-327f1132477f",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ },
+ {
+ "resource": "#18d556e9-a1d7-3069-81d9",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
}
+ ],
+ "tags": {
+ "page-break": 1,
+ "p": 6,
+ "grid-plate": 1,
+ "video-player": 1,
+ "code-sample": 1,
+ "h3": 2,
+ "ul": 1
+ },
+ "elements": 13
},
- {
- "id": "item-e6daa06e-dfd2-43a4-ade8-0c0ded24e0b4",
- "indent": "2",
- "location": "pages\/documentation-1\/haxcms\/life-cycle\/index.html",
- "slug": "documentation-1\/haxcms\/life-cycle",
- "order": "4",
- "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
- "title": "Life cycle",
- "description": "This is a general life cycle that happens when HAXcms \"boots up\". When web components are unpacking the contents of what to do it generally will work this way.page load, should it be no-js or a web c",
- "metadata": {
- "created": 1554496047,
- "updated": 1617805490,
- "readtime": 3,
- "contentDetails": {
- "headings": 3,
- "paragraphs": 5,
- "schema": [],
- "tags": {
- "p": 5,
- "ul": 3,
- "h2": 1,
- "code-sample": 1,
- "h3": 2
- },
- "elements": 12
- }
+ "published": true,
+ "locked": false
+ }
+ },
+ {
+ "id": "item-96d00871-d866-c65e-b7f0-4e242bde5b15",
+ "indent": "3",
+ "location": "pages/documentation-1/hax-development/hax-app-store/apps/index.html",
+ "slug": "documentation-1/hax-development/hax-app-store/apps",
+ "order": "0",
+ "parent": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
+ "title": "apps",
+ "description": "",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-f0af8879-a79c-4d1c-afc4-e23c32f52dc4",
+ "indent": "3",
+ "location": "pages/documentation-1/haxcms/theming/css-vars/index.html",
+ "slug": "documentation-1/haxcms/theming/css-vars",
+ "order": "0",
+ "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
+ "title": "CSS vars",
+ "description": "CSS can be modified via CSS variables. CSS variables create a happy middle ground between the constraints of Shadow DOM (namely that styles are fully encapsulated) and designers wanting flexibility a",
+ "metadata": {
+ "created": 1553349518,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-dfd62788-ba48-4051-a869-986e5956864f",
+ "indent": "2",
+ "location": "pages/documentation-1/haxcms/concepts/index.html",
+ "slug": "documentation-1/haxcms/concepts",
+ "order": "0",
+ "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "title": "Concepts",
+ "description": "HAXcms seeks to be a microsite generator and manager that doesn't require any command line in order to operate. HAXcms leverages HAX to give a best in class authoring experience while HAXcms seeks to",
+ "metadata": {
+ "created": 1550643005,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-e3dafe1a-1f50-1834-68f3-9f378e4ddda5",
+ "indent": "2",
+ "location": "pages/documentation-1/ux-concepts/add/index.html",
+ "slug": "documentation-1/ux-concepts/add",
+ "order": "0",
+ "parent": "item-06233713-d866-3351-81da-841d3931144c",
+ "title": "Add Content",
+ "description": "Add Content is how you create and add complex blocks to the HAX page editor. These blocks can be variable based on what you chose to include (see appstore) but ultimately are just adding web compon",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/sites/haxtheweb/files/Screenshot from 2020-08-17 14-34-32.png",
+ "fullUrl": "/sites/haxtheweb/files/Screenshot from 2020-08-17 14-34-32.png",
+ "url": "files/Screenshot from 2020-08-17 14-34-32.png",
+ "type": "image/png",
+ "name": "Screenshot from 2020-08-17 14-34-32.png",
+ "size": 78391
+ }
+ ],
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 1,
+ "schema": [],
+ "tags": {
+ "p": 1,
+ "img": 1
+ },
+ "elements": 2
+ }
+ }
+ },
+ {
+ "id": "item-275a0928-60ab-b7ce-c2b6-d0e35826498b",
+ "indent": "1",
+ "location": "pages/documentation-1/core-concepts/index.html",
+ "slug": "documentation-1/core-concepts",
+ "order": "1",
+ "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
+ "title": "Core concepts",
+ "description": "",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-39074718-758f-d51b-1dc5-15cfbb79e44c",
+ "indent": "2",
+ "location": "pages/documentation-1/hax-development/hello-world-element/index.html",
+ "slug": "documentation-1/hax-development/hello-world-element",
+ "order": "1",
+ "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "title": "hello-world element",
+ "description": "Let's see what goes into the element called @lrnwebcomponents/example-hax-element in order to learn how we can wire anything up to HAXeditor.@lrnwebcomponents/example-hax-element/example-hax-elem",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617806663,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 1,
+ "paragraphs": 1,
+ "schema": [],
+ "tags": {
+ "p": 1,
+ "h2": 1,
+ "code-sample": 1
+ },
+ "elements": 3
+ }
+ }
+ },
+ {
+ "id": "item-650eaa59-478c-4674-8ef3-93e4b43e2310",
+ "indent": "1",
+ "location": "pages/welcome/why-haxcms-1/index.html",
+ "slug": "welcome/why-haxcms-1",
+ "order": "1",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "HAXcms",
+ "description": "HAXcms powers this website and is a hybrid static site generator, a new class of CMS. It's hybrid in that everything is written to static like a static site generator and it's 100% decoupled via web ",
+ "metadata": {
+ "created": 1563972322,
+ "updated": 1617805490,
+ "readtime": 2,
+ "contentDetails": {
+ "headings": 6,
+ "paragraphs": 5,
+ "schema": [
+ {
+ "typeof": "oer:Assessment",
+ "resource": "#dd2feacf-ed4a-dcb0-b85d",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
}
- },
- {
- "id": "item-4bce3546-4d53-4456-8eae-494c79180229",
- "indent": "1",
- "location": "pages\/documentation-1\/haxcms\/index.html",
- "slug": "documentation-1\/haxcms",
- "order": "4",
- "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
- "title": "HAXcms",
- "description": "HAXcms, that which powers the site you are currently reading is a powerful \"static site generator\" paradigm. It leverages server technology in order to orchestrate a static site. That way the \"server\"",
- "metadata": {
- "created": 1550643005,
- "updated": 1617805490,
- "files": [
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/HAXCms workflow.jpg",
- "fullUrl": "\/_sites\/haxtheweb\/files\/HAXCms workflow.jpg",
- "url": "files\/HAXCms workflow.jpg",
- "type": "image\/jpeg",
- "name": "HAXCms workflow.jpg",
- "size": 72736
- }
- ]
+ ],
+ "tags": {
+ "grid-plate": 1,
+ "h2": 2,
+ "ul": 3,
+ "p": 5,
+ "h4": 4,
+ "img": 1,
+ "multiple-choice": 1
+ },
+ "elements": 17
+ }
+ }
+ },
+ {
+ "id": "item-5a6e6643-3834-4ac5-ae70-0090263759cb",
+ "indent": "2",
+ "location": "pages/documentation-1/haxcms/installation/index.html",
+ "slug": "documentation-1/haxcms/installation",
+ "order": "1",
+ "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "title": "Installation",
+ "description": "Generic PHP install directionsHave PHP? well then you can setup HAXcms pretty quick. Just download HAXcms and navigate to its directory in a browser. It'll attempt to automatically install (which is ",
+ "metadata": {
+ "created": 1550643005,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/mampstructure.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/mampstructure.jpg",
+ "url": "files/mampstructure.jpg",
+ "type": "image/jpeg",
+ "name": "mampstructure.jpg",
+ "size": 15099
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/mampstart.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/mampstart.jpg",
+ "url": "files/mampstart.jpg",
+ "type": "image/jpeg",
+ "name": "mampstart.jpg",
+ "size": 12670
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/mamppage.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/mamppage.jpg",
+ "url": "files/mamppage.jpg",
+ "type": "image/jpeg",
+ "name": "mamppage.jpg",
+ "size": 17086
+ }
+ ],
+ "readtime": 2,
+ "contentDetails": {
+ "headings": 6,
+ "paragraphs": 13,
+ "schema": [
+ {
+ "resource": "#990ebe5c-04c8-58b2-385a",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
+ },
+ {
+ "resource": "#4e5cac2b-786f-596c-b394",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
}
- },
- {
- "id": "item-cdd303d0-4490-4433-94fa-0e78cf849e80",
- "indent": "2",
- "location": "pages\/item-cdd303d0-4490-4433-94fa-0e78cf849e80\/index.html",
- "slug": "documentation-1\/hax-development\/internationalization-i18n",
- "order": "4",
- "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
- "title": "Internationalization - i18n",
- "description": "We've created a way to internationalize ANY web component you create. Because this is a complex topic, and we seek to empower anyone, anywhere to work with web components; i18n is a critical piece of ",
- "metadata": {
- "created": 1617805490,
- "updated": 1617806250,
- "readtime": 2,
- "contentDetails": {
- "headings": 1,
- "paragraphs": 3,
- "schema": [],
- "tags": {
- "p": 3,
- "a": 1,
- "h3": 1,
- "ul": 1,
- "code-sample": 2
- },
- "elements": 8
- }
+ ],
+ "tags": {
+ "h2": 4,
+ "p": 13,
+ "code-sample": 2,
+ "h3": 2,
+ "media-image": 2,
+ "img": 1,
+ "ul": 1
+ },
+ "elements": 25
+ }
+ }
+ },
+ {
+ "id": "item-a91393ea-31f8-30bd-888f-275a05e08e0a",
+ "indent": "3",
+ "location": "pages/documentation-1/hax-development/hax-app-store/blox/index.html",
+ "slug": "documentation-1/hax-development/hax-app-store/blox",
+ "order": "1",
+ "parent": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
+ "title": "blox",
+ "description": "",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-504d6323-873d-49e3-9de0-ffa56c28fdf5",
+ "indent": "1",
+ "location": "pages/get-involved-1/index.html",
+ "slug": "get-involved-1",
+ "order": "1",
+ "parent": "item-welcome",
+ "title": "Get Involved!",
+ "description": "Join our communityJoin us on the HAXTheWeb Slack channelJoin us for HAXcamp Un-code every Friday 3 pm - 5 pm (EST)Follow / use the #HAXTheWeb hash tagJoin our projectsHAXcms - That which ",
+ "metadata": {
+ "created": 1553197584,
+ "updated": 1617805490,
+ "readtime": 2,
+ "contentDetails": {
+ "headings": 3,
+ "paragraphs": 6,
+ "schema": [],
+ "tags": {
+ "h2": 3,
+ "ul": 3,
+ "p": 6,
+ "meme-maker": 1
+ },
+ "elements": 13
+ }
+ }
+ },
+ {
+ "id": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "indent": 0,
+ "location": "pages/integrations-1/index.html",
+ "slug": "integrations-1",
+ "order": "1",
+ "parent": null,
+ "title": "Integrations",
+ "description": "HAX provides plenty of ways to integrate into the platforms you already use! Here are some of the plugins and integrations below this heading.Some things a liittle bit crazyCode Pen?!Demonstration",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 1,
+ "paragraphs": 1,
+ "schema": [],
+ "tags": {
+ "p": 1,
+ "h2": 1,
+ "ul": 1
+ },
+ "elements": 3
+ }
+ }
+ },
+ {
+ "id": "item-3859b3ac-1ef5-45b4-909c-3892f97a9f4c",
+ "indent": "3",
+ "location": "pages/documentation-1/haxcms/theming/skin-a-site/index.html",
+ "slug": "documentation-1/haxcms/theming/skin-a-site",
+ "order": "1",
+ "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
+ "title": "Skin a site",
+ "description": "Theme skinning is the easiest way to build a decent looking theme in HAXcms. This method is geared toward people that know CSS and HTML but can't get into the weeds of web components or javascript.Wo",
+ "metadata": {
+ "created": 1553354507,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-eca7c8a4-393a-4e68-8cb4-440e94683738",
+ "indent": "2",
+ "location": "pages/item-eca7c8a4-393a-4e68-8cb4-440e94683738/index.html",
+ "slug": "documentation-1/ux-concepts/block-settings",
+ "order": "1",
+ "parent": "item-06233713-d866-3351-81da-841d3931144c",
+ "title": "Block settings",
+ "description": "Block settings will change contextually based on which block has been selected in the editable area of the page. In this screenshot, a paragraph has been selected and so the icon associated with it is",
+ "metadata": {
+ "created": 1597689709,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/sites/haxtheweb/files/Screenshot from 2020-08-17 14-42-07.png",
+ "fullUrl": "/sites/haxtheweb/files/Screenshot from 2020-08-17 14-42-07.png",
+ "url": "files/Screenshot from 2020-08-17 14-42-07.png",
+ "type": "image/png",
+ "name": "Screenshot from 2020-08-17 14-42-07.png",
+ "size": 46191
+ },
+ {
+ "path": "/var/www/html/sites/haxtheweb/files/Screenshot from 2020-08-17 14-46-06.png",
+ "fullUrl": "/sites/haxtheweb/files/Screenshot from 2020-08-17 14-46-06.png",
+ "url": "files/Screenshot from 2020-08-17 14-46-06.png",
+ "type": "image/png",
+ "name": "Screenshot from 2020-08-17 14-46-06.png",
+ "size": 66054
+ }
+ ],
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 2,
+ "paragraphs": 2,
+ "schema": [],
+ "tags": {
+ "p": 2,
+ "h2": 2,
+ "img": 2
+ },
+ "elements": 6
+ }
+ }
+ },
+ {
+ "id": "item-44a138ea-5122-4a2b-b2ce-8bf1fb11bb29",
+ "indent": "2",
+ "location": "pages/documentation-1/haxcms/structure/index.html",
+ "slug": "documentation-1/haxcms/structure",
+ "order": "2",
+ "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "title": "Structure",
+ "description": "By design we've got a very simple structure. The goal of HAXcms isn't to lock you into anything and so we've simplified our file structure over other solutions.The key directories / files include:fi",
+ "metadata": {
+ "created": 1550643005,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/2019-02-20_01-26-01.png",
+ "fullUrl": "/_sites/haxtheweb/files/2019-02-20_01-26-01.png",
+ "url": "files/2019-02-20_01-26-01.png",
+ "type": "image/png",
+ "name": "2019-02-20_01-26-01.png",
+ "size": 19448
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/2019-02-20_01-26-10.png",
+ "fullUrl": "/_sites/haxtheweb/files/2019-02-20_01-26-10.png",
+ "url": "files/2019-02-20_01-26-10.png",
+ "type": "image/png",
+ "name": "2019-02-20_01-26-10.png",
+ "size": 59026
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/2019-02-25_16-22-25.png",
+ "fullUrl": "/_sites/haxtheweb/files/2019-02-25_16-22-25.png",
+ "url": "files/2019-02-25_16-22-25.png",
+ "type": "image/png",
+ "name": "2019-02-25_16-22-25.png",
+ "size": 37234
+ }
+ ]
+ }
+ },
+ {
+ "id": "item-f1c8e3a4-eddb-806a-8a3a-206c1e33f7a9",
+ "indent": "2",
+ "location": "pages/documentation-1/hax-development/hax-schema/index.html",
+ "slug": "documentation-1/hax-development/hax-schema",
+ "order": "2",
+ "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "title": "HAX schema",
+ "description": "Implementing HAXSchemaIn order for your element to talk to the HAX editor, you need to implement static get haxProperties() on your element. This callback either returns a String based location of ",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617979979,
+ "readtime": 5,
+ "contentDetails": {
+ "headings": 6,
+ "paragraphs": 7,
+ "schema": [],
+ "tags": {
+ "h2": 5,
+ "p": 7,
+ "ul": 1,
+ "code-sample": 5,
+ "h3": 1,
+ "grid-plate": 1,
+ "img": 3
+ },
+ "elements": 23
+ }
+ }
+ },
+ {
+ "id": "item-29e7d7f5-db3e-3ef0-733a-ed41d88f2835",
+ "indent": "1",
+ "location": "pages/welcome/solutions/index.html",
+ "slug": "welcome/solutions",
+ "order": "2",
+ "parent": "item-welcome",
+ "title": "Solutions",
+ "description": "Modularity is key to HAX success. Here are some of the solutions that HAX provides which leverage the HAXeditor interface.HAX editorHAX or HAXeditor is the editor of the future you're using in this ",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "readtime": 2,
+ "contentDetails": {
+ "headings": 4,
+ "paragraphs": 9,
+ "schema": [
+ {
+ "resource": "#832335f3-7442-7d40-0d56",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
}
+ ],
+ "tags": {
+ "p": 9,
+ "h2": 3,
+ "h3": 1,
+ "media-image": 1
+ },
+ "elements": 14
},
- {
- "id": "item-52727dcf-a7d5-90e9-c459-a4a53dd07ffd",
- "indent": "2",
- "location": "pages\/documentation-1\/hax-development\/hax-element-schema\/index.html",
- "slug": "documentation-1\/hax-development\/hax-element-schema",
- "order": "5",
- "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
- "title": "HAX Element Schema",
- "description": "",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490
+ "published": true
+ }
+ },
+ {
+ "id": "item-17449951-7504-468a-b315-4388b85c00e3",
+ "indent": "3",
+ "location": "pages/documentation-1/haxcms/theming/web-components/index.html",
+ "slug": "documentation-1/haxcms/theming/web-components",
+ "order": "2",
+ "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
+ "title": "Web components",
+ "description": "Do you know full on web component development? Well, you can build a new theme from scratch. The best way to learn is by picking a part some of our examples. For this we'll analyze the haxcms-slide-th",
+ "metadata": {
+ "created": 1553349518,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-5a9ea17e-63ce-96f3-e94f-d5282b290661",
+ "indent": "1",
+ "location": "pages/integrations-1/wordpress/index.html",
+ "slug": "integrations-1/wordpress",
+ "order": "2",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "WordPress",
+ "description": "We support WordPress too! In order to use HAX though you'll want to replace the Gutenberg editor. The following steps will help you get it up and running.Get the Classic Editor. This plugin helps re",
+ "metadata": {
+ "created": 1549428503,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 1,
+ "schema": [],
+ "tags": {
+ "p": 1,
+ "ol": 1
+ },
+ "elements": 2
+ }
+ }
+ },
+ {
+ "id": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
+ "indent": 0,
+ "location": "pages/documentation-1/index.html",
+ "slug": "documentation-1",
+ "order": 2,
+ "parent": null,
+ "title": "Documentation",
+ "description": "HAX may seem complex, but it's built on a series of standards that will never break. As a result of the complexity of these standards, there are things you should know prior to digging into HAXedit",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1661452038,
+ "readtime": 1,
+ "files": [
+ {
+ "path": "/var/www/html/sites/haxtheweb/files/3450183.png",
+ "fullUrl": "/sites/haxtheweb/files/3450183.png",
+ "url": "files/3450183.png",
+ "type": "image/png",
+ "name": "3450183.png",
+ "size": 9992
+ }
+ ],
+ "contentDetails": {
+ "headings": 1,
+ "paragraphs": 3,
+ "schema": [
+ {
+ "resource": "#4e04ff57-98de-f227-681f-d3425ba60f04",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
}
+ ],
+ "tags": {
+ "page-break": 1,
+ "p": 3,
+ "h3": 1,
+ "grid-plate": 1
+ },
+ "elements": 6
},
- {
- "id": "item-5dede24a-2de7-4fae-a00b-31e8121e3c16",
- "indent": "1",
- "location": "pages\/welcome\/i-have-issues\/index.html",
- "slug": "welcome\/i-have-issues",
- "order": "5",
- "parent": "item-welcome",
- "title": "I have issues",
- "description": "You have a problem or would like to contribute to anything in our universe? That's awesome! All issues, feature requests and general thumbs up should happen in our issue queue on github:\u00a0https:\/\/gith",
- "metadata": {
- "created": 1553556295,
- "updated": 1617805490,
- "readtime": 1,
- "contentDetails": {
- "headings": 0,
- "paragraphs": 1,
- "schema": [
- {
- "resource": "#b54c9847-4d26-90ae-d748",
- "prefix": "oer:http:\/\/oerschema.org\/ schema:http:\/\/schema.org\/ dc:http:\/\/purl.org\/dc\/terms\/ foaf:http:\/\/xmlns.com\/foaf\/0.1\/ cc:http:\/\/creativecommons.org\/ns# bib:http:\/\/bib.schema.org "
- }
- ],
- "tags": {
- "p": 1,
- "a11y-gif-player": 1
- },
- "elements": 2
- }
+ "published": true,
+ "locked": false
+ }
+ },
+ {
+ "id": "item-faaa1198-10c7-ff30-ece6-01b30a9c0f85",
+ "indent": "3",
+ "location": "pages/documentation-1/hax-development/hax-app-store/stax/index.html",
+ "slug": "documentation-1/hax-development/hax-app-store/stax",
+ "order": "2",
+ "parent": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
+ "title": "stax",
+ "description": "Stax are what most WYSIWYG systems would call Templates. Stax in HAX are a series of HAX element schema's in succession.Below is a definition for the \"example lesson\" seen above. This is a larger ex",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "readtime": 4
+ }
+ },
+ {
+ "id": "item-251f207e-4046-a4b0-40ce-7c28fe38ae23",
+ "indent": "2",
+ "location": "pages/documentation-1/ux-concepts/find/index.html",
+ "slug": "documentation-1/ux-concepts/find",
+ "order": "2",
+ "parent": "item-06233713-d866-3351-81da-841d3931144c",
+ "title": "Search",
+ "description": "Search is a data interoperability layer to HAX where web components data binding shines. Search is able to stitch remote data together with local web components in order to streamline workflows. You ",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "published": true,
+ "files": [
+ {
+ "path": "/var/www/html/sites/haxtheweb/files/Screenshot from 2020-08-17 14-36-15.png",
+ "fullUrl": "/sites/haxtheweb/files/Screenshot from 2020-08-17 14-36-15.png",
+ "url": "files/Screenshot from 2020-08-17 14-36-15.png",
+ "type": "image/png",
+ "name": "Screenshot from 2020-08-17 14-36-15.png",
+ "size": 135869
+ },
+ {
+ "path": "/var/www/html/sites/haxtheweb/files/Screenshot from 2020-08-17 14-43-47.png",
+ "fullUrl": "/sites/haxtheweb/files/Screenshot from 2020-08-17 14-43-47.png",
+ "url": "files/Screenshot from 2020-08-17 14-43-47.png",
+ "type": "image/png",
+ "name": "Screenshot from 2020-08-17 14-43-47.png",
+ "size": 105778
+ }
+ ],
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 1,
+ "schema": [],
+ "tags": {
+ "p": 1,
+ "img": 1
+ },
+ "elements": 2
+ }
+ }
+ },
+ {
+ "id": "item-06233713-d866-3351-81da-841d3931144c",
+ "indent": "1",
+ "location": "pages/documentation-1/ux-concepts/index.html",
+ "slug": "documentation-1/ux-concepts",
+ "order": "2",
+ "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
+ "title": "UX concepts",
+ "description": "The HAX UI can be broken down into three major production concepts. Content authors are either:Adding something they already haveEditing the Settings of the activated element on the pageSearch for ",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 1,
+ "schema": [],
+ "tags": {
+ "p": 1,
+ "ol": 1
+ },
+ "elements": 2
+ }
+ }
+ },
+ {
+ "id": "item-0e4cc53c-944f-658a-5440-eacc5a1c0358",
+ "indent": "1",
+ "location": "pages/documentation-1/related-technologies/index.html",
+ "slug": "documentation-1/related-technologies",
+ "order": "3",
+ "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
+ "title": "Related technologies",
+ "description": "",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-a839d5c1-3321-a395-c032-4ea8ea2cfa27",
+ "indent": "3",
+ "location": "pages/documentation-1/hax-development/hax-app-store/autoloader/index.html",
+ "slug": "documentation-1/hax-development/hax-app-store/autoloader",
+ "order": "3",
+ "parent": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
+ "title": "autoloader",
+ "description": "Autoloader is waaayyy easier to implement then the other parts of the appstore spec and is probably the most important as it loads all the elements that will be available to your users. All it is is a",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617979603,
+ "readtime": 2,
+ "contentDetails": {
+ "headings": 4,
+ "paragraphs": 5,
+ "schema": [],
+ "tags": {
+ "p": 5,
+ "ol": 1,
+ "h3": 1,
+ "code-sample": 1,
+ "h4": 3
+ },
+ "elements": 11
+ }
+ }
+ },
+ {
+ "id": "item-aa589faa-e860-4221-82fa-df6d57328ac2",
+ "indent": "2",
+ "location": "pages/item-aa589faa-e860-4221-82fa-df6d57328ac2/index.html",
+ "slug": "documentation-1/ux-concepts/templates-and-layouts",
+ "order": "3",
+ "parent": "item-06233713-d866-3351-81da-841d3931144c",
+ "title": "Templates and Layouts",
+ "description": "Templates and layouts allow you to drop in pre-built pieces of content structure. This might be a series of images or an example of content that could be written.",
+ "metadata": {
+ "created": 1597689709,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 1,
+ "schema": [],
+ "tags": {
+ "p": 1,
+ "img": 1
+ },
+ "elements": 2
+ }
+ }
+ },
+ {
+ "id": "item-a84c35ec-85c8-4c7c-b4ab-80c2fbc87550",
+ "indent": "3",
+ "location": "pages/documentation-1/haxcms/theming/core-elements/index.html",
+ "slug": "documentation-1/haxcms/theming/core-elements",
+ "order": "3",
+ "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
+ "title": "Core elements",
+ "description": "While you're not required to use them, HAXcms supplies a series of elements that can make theme development effortless. You can see the source of these in greater detail under the theme directory of h",
+ "metadata": {
+ "created": 1552437937,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/2019-03-12_16-45-51.png",
+ "fullUrl": "/_sites/haxtheweb/files/2019-03-12_16-45-51.png",
+ "url": "files/2019-03-12_16-45-51.png",
+ "type": "image/png",
+ "name": "2019-03-12_16-45-51.png",
+ "size": 212153
+ }
+ ]
+ }
+ },
+ {
+ "id": "item-49d727fb-b5c8-871a-3979-a5143116946d",
+ "indent": 0,
+ "location": "pages/f-a-q-1/index.html",
+ "slug": "f-a-q-1",
+ "order": 3,
+ "parent": null,
+ "title": "F.A.Q.",
+ "description": "Are web components ready for prime time?Yes. Web components effectively turn the HTML of a site into a consistent API. HAXeditor leverages this approach and standardizes its usage in order to ",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1661452776,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/pubwork1.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/pubwork1.jpg",
+ "url": "files/pubwork1.jpg",
+ "type": "image/jpeg",
+ "name": "pubwork1.jpg",
+ "size": 51662
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/IMG_20190127_153429.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/IMG_20190127_153429.jpg",
+ "url": "files/IMG_20190127_153429.jpg",
+ "type": "image/jpeg",
+ "name": "IMG_20190127_153429.jpg",
+ "size": 27242
+ }
+ ],
+ "readtime": 5,
+ "contentDetails": {
+ "headings": 6,
+ "paragraphs": 11,
+ "schema": [
+ {
+ "resource": "#4afe6e57-7d57-53d4-cca3-2512c120ffcc",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
}
+ ],
+ "tags": {
+ "page-break": 1,
+ "h2": 6,
+ "p": 11,
+ "ul": 3
+ },
+ "elements": 21
},
- {
- "id": "item-677468f6-7bff-4bb6-bd2a-18520d88b3c4",
- "indent": "1",
- "location": "pages\/integrations-1\/classicpress-1\/index.html",
- "slug": "integrations-1\/classicpress-1",
- "order": "5",
- "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
- "title": "ClassicPress",
- "description": "ClassicPress is a popular fork of WordPress that's even easier to get HAX up and running then it is in the original!Get the HAX plugin\u00a0from the wordpress registryGo to edit \/ create a page\/post ",
- "metadata": {
- "created": 1565279009,
- "updated": 1617805490,
- "readtime": 1,
- "contentDetails": {
- "headings": 1,
- "paragraphs": 2,
- "schema": [
- {
- "resource": "#85219ed3-d806-24d7-5c02",
- "prefix": "oer:http:\/\/oerschema.org\/ schema:http:\/\/schema.org\/ dc:http:\/\/purl.org\/dc\/terms\/ foaf:http:\/\/xmlns.com\/foaf\/0.1\/ cc:http:\/\/creativecommons.org\/ns# bib:http:\/\/bib.schema.org "
- }
- ],
- "tags": {
- "p": 2,
- "ol": 1,
- "h2": 1,
- "video-player": 1
- },
- "elements": 5
- }
+ "published": true,
+ "locked": false
+ }
+ },
+ {
+ "id": "item-ca8c6ba8-c012-8ace-343a-3701f20609e9",
+ "indent": "1",
+ "location": "pages/integrations-1/drupal/index.html",
+ "slug": "integrations-1/drupal",
+ "order": "3",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "Drupal",
+ "description": "Try on SimplyTest.meTry HAX on Simplytest me in a few steps without needing to install anythingGo to Simplytest me and pick HAX modulePick 9.x,8.x or 7.xLog in, go to Administration -> Configurat",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/scale-50/d8cdnimage.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/scale-50/d8cdnimage.jpg",
+ "url": "files/scale-50/d8cdnimage.jpg",
+ "type": "image/jpeg",
+ "name": "d8cdnimage.jpg",
+ "size": 136928
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/scale-50/haxd8simply.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/scale-50/haxd8simply.jpg",
+ "url": "files/scale-50/haxd8simply.jpg",
+ "type": "image/jpeg",
+ "name": "haxd8simply.jpg",
+ "size": 91967
+ }
+ ],
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 3,
+ "paragraphs": 3,
+ "schema": [
+ {
+ "resource": "#3b994c7f-952f-e85f-48b3",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
}
- },
- {
- "id": "item-c7500902-9aed-4117-8949-a6597a02dada",
- "indent": "2",
- "location": "pages\/documentation-1\/haxcms\/troubleshooting\/index.html",
- "slug": "documentation-1\/haxcms\/troubleshooting",
- "order": "5",
- "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
- "title": "Troubleshooting",
- "description": "These are some common issues \/ resolutions in HAXcms related to installation, publishing, etc.I installed HAXcms and forgot my passwordYour username and password can be found in _config\/config.php o",
- "metadata": {
- "created": 1553555764,
- "updated": 1617805490
+ ],
+ "tags": {
+ "h2": 2,
+ "p": 3,
+ "ol": 2,
+ "grid-plate": 1,
+ "h3": 1,
+ "wikipedia-query": 1
+ },
+ "elements": 10
+ }
+ }
+ },
+ {
+ "id": "item-01e0f49a-190a-4c8d-ae0e-83d62675e070",
+ "indent": "1",
+ "location": "pages/welcome/roadmap-1/index.html",
+ "slug": "welcome/roadmap-1",
+ "order": "3",
+ "parent": "item-welcome",
+ "title": "Roadmap",
+ "description": "HAX encompasses many different projectsThis roadmap illustrates all the projects related to HAX and ELMS:LN, which HAX comes from. The little settings gears found throughout illustrate enhancements a",
+ "metadata": {
+ "created": 1565290387,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/sites/haxtheweb/files//haxrelationships.jpg",
+ "fullUrl": "/sites/haxtheweb/files/haxrelationships.jpg",
+ "url": "files/haxrelationships.jpg",
+ "type": "image/jpeg",
+ "name": "haxrelationships.jpg",
+ "size": 88416
+ },
+ {
+ "path": "/var/www/html/sites/haxtheweb/files//Roadmap.jpg",
+ "fullUrl": "/sites/haxtheweb/files/Roadmap.jpg",
+ "url": "files/Roadmap.jpg",
+ "type": "image/jpeg",
+ "name": "Roadmap.jpg",
+ "size": 108725
+ },
+ {
+ "path": "/var/www/html/sites/haxtheweb/files/headshot272229.61999999825.jpg",
+ "fullUrl": "/sites/haxtheweb/files/headshot272229.61999999825.jpg",
+ "url": "files/headshot272229.61999999825.jpg",
+ "type": "image/jpeg",
+ "name": "headshot272229.61999999825.jpg",
+ "size": 121898
+ }
+ ],
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 2,
+ "paragraphs": 6,
+ "schema": [],
+ "tags": {
+ "h3": 2,
+ "p": 6,
+ "img": 2
+ },
+ "elements": 10
+ }
+ }
+ },
+ {
+ "id": "item-5df45272-f6b9-4f4f-b650-16c47aeac6fb",
+ "indent": "2",
+ "location": "pages/documentation-1/haxcms/publishing/index.html",
+ "slug": "documentation-1/haxcms/publishing",
+ "order": "3",
+ "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "title": "Publishing",
+ "description": "HAXcms requires being published in order to be visible to other people. Working locally or on Desktop or on a server, is akin to you writing a document on your computer. It's not shared with anyone. W",
+ "metadata": {
+ "created": 1550643005,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/gitpublishingdata.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/gitpublishingdata.jpg",
+ "url": "files/gitpublishingdata.jpg",
+ "type": "image/jpeg",
+ "name": "gitpublishingdata.jpg",
+ "size": 12847
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/pubwork1.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/pubwork1.jpg",
+ "url": "files/pubwork1.jpg",
+ "type": "image/jpeg",
+ "name": "pubwork1.jpg",
+ "size": 51662
+ },
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/pubwork2.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/pubwork2.jpg",
+ "url": "files/pubwork2.jpg",
+ "type": "image/jpeg",
+ "name": "pubwork2.jpg",
+ "size": 70772
+ }
+ ]
+ }
+ },
+ {
+ "id": "item-44cc230b-07db-442a-90cf-687e2d089a5d",
+ "indent": "2",
+ "location": "pages/item-44cc230b-07db-442a-90cf-687e2d089a5d/index.html",
+ "slug": "haxhooks",
+ "order": "3",
+ "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "title": "haxHooks",
+ "description": "Elements can integrate deeply into HAX state management using what we call \"hax hooks\". By supplying a method on your web component like haxHooks() you are magically able to tap into different li",
+ "metadata": {
+ "created": 1617802345,
+ "updated": 1617805490,
+ "readtime": 5,
+ "contentDetails": {
+ "headings": 10,
+ "paragraphs": 11,
+ "schema": [],
+ "tags": {
+ "p": 11,
+ "h2": 2,
+ "ul": 2,
+ "code-sample": 1,
+ "h3": 8
+ },
+ "elements": 24
+ }
+ }
+ },
+ {
+ "id": "item-c86470aa-0295-4c9d-9f17-48ad79ab05be",
+ "indent": "1",
+ "location": "pages/welcome/presentations/index.html",
+ "slug": "welcome/presentations",
+ "order": "4",
+ "parent": "item-welcome",
+ "title": "Presentations",
+ "description": "This is the youtube playlist of all things HAXTheWebThis playlist is updated on a regular basis so make sure to subscribe to the youtube channel for updates. There's also many other playlists relat",
+ "metadata": {
+ "created": 1552910817,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 2,
+ "schema": [],
+ "tags": {
+ "p": 2,
+ "iframe": 1
+ },
+ "elements": 3
+ }
+ }
+ },
+ {
+ "id": "item-4824986b-1897-568d-fdd9-4b882ea6ee1f",
+ "indent": "1",
+ "location": "pages/integrations-1/backdropcms/index.html",
+ "slug": "integrations-1/backdropcms",
+ "order": "4",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "BackdropCMS",
+ "description": "Getting HAX setup in BackdropCMSSearch for HAX on BackdropCMS.org or from within your Backdrop siteFollow the instructions in the Web components module README for buildingDon't worry, HAX requ",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 1,
+ "paragraphs": 1,
+ "schema": [
+ {
+ "resource": "#5b790bef-7d78-f85e-104d",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
}
- },
- {
- "id": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
- "indent": "2",
- "location": "pages\/documentation-1\/hax-development\/hax-app-store\/index.html",
- "slug": "documentation-1\/hax-development\/hax-app-store",
- "order": "6",
- "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
- "title": "HAX app store",
- "description": "",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490
+ ],
+ "tags": {
+ "p": 1,
+ "h2": 1,
+ "ol": 1,
+ "media-image": 1
+ },
+ "elements": 4
+ }
+ }
+ },
+ {
+ "id": "item-7ab2e2fd-622f-4a0f-9967-599410c6cd43",
+ "indent": 0,
+ "location": "pages/scavenger-hunt-1/index.html",
+ "slug": "scavenger-hunt-1",
+ "order": "4",
+ "parent": null,
+ "title": "Scavenger Hunt",
+ "description": "Become part of our dynasty franchise **by wearing a cool jerseyWe're building the greatest roster of people ever to HAX the complacency of our industry. Take the HAX scavenger hunt at the next ev",
+ "metadata": {
+ "created": 1563970537,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 1,
+ "paragraphs": 2,
+ "schema": [
+ {
+ "typeof": "oer:SupportingMaterial",
+ "resource": "#238ee75a-de4d-02a9-3755",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
}
- },
- {
- "id": "item-897a9839-4ca3-a336-4795-afca7b6de0ee",
- "indent": "1",
- "location": "pages\/integrations-1\/gravcms\/index.html",
- "slug": "integrations-1\/gravcms",
- "order": "6",
- "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
- "title": "GravCMS",
- "description": "There's two plugins needed to run HAX on GravCMS - The web components and HAX plugins.Web components plugin\u00a0- provides the build routine and installation instructionsHAX plugin\u00a0- editor capab",
- "metadata": {
- "created": 1548826475,
- "updated": 1617805490,
- "readtime": 1,
- "contentDetails": {
- "headings": 0,
- "paragraphs": 2,
- "schema": [
- {
- "resource": "#f0356db6-f345-316d-1426",
- "prefix": "oer:http:\/\/oerschema.org\/ schema:http:\/\/schema.org\/ dc:http:\/\/purl.org\/dc\/terms\/ foaf:http:\/\/xmlns.com\/foaf\/0.1\/ cc:http:\/\/creativecommons.org\/ns# bib:http:\/\/bib.schema.org "
- }
- ],
- "tags": {
- "p": 2,
- "ul": 1,
- "media-image": 1
- },
- "elements": 4
- }
+ ],
+ "tags": {
+ "h3": 1,
+ "p": 2,
+ "ul": 1,
+ "task-list": 1,
+ "meme-maker": 1
+ },
+ "elements": 6
+ }
+ }
+ },
+ {
+ "id": "item-7f3dd690-4c3f-4616-baa5-159b9a15809c",
+ "indent": "3",
+ "location": "pages/documentation-1/haxcms/theming/dev-workflows/index.html",
+ "slug": "documentation-1/haxcms/theming/dev-workflows",
+ "order": "4",
+ "parent": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
+ "title": "Dev workflows",
+ "description": "Our development workflow is as follows (for themes)All custom theme work happens in your _config directoryMake my-theme.js, pull everything together, either in this directory or in a wcfactory cat",
+ "metadata": {
+ "created": 1553349518,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-e6daa06e-dfd2-43a4-ade8-0c0ded24e0b4",
+ "indent": "2",
+ "location": "pages/documentation-1/haxcms/life-cycle/index.html",
+ "slug": "documentation-1/haxcms/life-cycle",
+ "order": "4",
+ "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "title": "Life cycle",
+ "description": "This is a general life cycle that happens when HAXcms \"boots up\". When web components are unpacking the contents of what to do it generally will work this way.page load, should it be no-js or a web c",
+ "metadata": {
+ "created": 1554496047,
+ "updated": 1617805490,
+ "readtime": 3,
+ "contentDetails": {
+ "headings": 3,
+ "paragraphs": 5,
+ "schema": [],
+ "tags": {
+ "p": 5,
+ "ul": 3,
+ "h2": 1,
+ "code-sample": 1,
+ "h3": 2
+ },
+ "elements": 12
+ }
+ }
+ },
+ {
+ "id": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "indent": "1",
+ "location": "pages/documentation-1/haxcms/index.html",
+ "slug": "documentation-1/haxcms",
+ "order": "4",
+ "parent": "item-db25d465-f8ee-6d9b-a738-f9e94305d89d",
+ "title": "HAXcms",
+ "description": "HAXcms, that which powers the site you are currently reading is a powerful \"static site generator\" paradigm. It leverages server technology in order to orchestrate a static site. That way the \"server\"",
+ "metadata": {
+ "created": 1550643005,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/HAXCms workflow.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/HAXCms workflow.jpg",
+ "url": "files/HAXCms workflow.jpg",
+ "type": "image/jpeg",
+ "name": "HAXCms workflow.jpg",
+ "size": 72736
+ }
+ ]
+ }
+ },
+ {
+ "id": "item-cdd303d0-4490-4433-94fa-0e78cf849e80",
+ "indent": "2",
+ "location": "pages/item-cdd303d0-4490-4433-94fa-0e78cf849e80/index.html",
+ "slug": "documentation-1/hax-development/internationalization-i18n",
+ "order": "4",
+ "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "title": "Internationalization - i18n",
+ "description": "We've created a way to internationalize ANY web component you create. Because this is a complex topic, and we seek to empower anyone, anywhere to work with web components; i18n is a critical piece of ",
+ "metadata": {
+ "created": 1617805490,
+ "updated": 1617806250,
+ "readtime": 2,
+ "contentDetails": {
+ "headings": 1,
+ "paragraphs": 3,
+ "schema": [],
+ "tags": {
+ "p": 3,
+ "a": 1,
+ "h3": 1,
+ "ul": 1,
+ "code-sample": 2
+ },
+ "elements": 8
+ }
+ }
+ },
+ {
+ "id": "item-52727dcf-a7d5-90e9-c459-a4a53dd07ffd",
+ "indent": "2",
+ "location": "pages/documentation-1/hax-development/hax-element-schema/index.html",
+ "slug": "documentation-1/hax-development/hax-element-schema",
+ "order": "5",
+ "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "title": "HAX Element Schema",
+ "description": "",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-5dede24a-2de7-4fae-a00b-31e8121e3c16",
+ "indent": "1",
+ "location": "pages/welcome/i-have-issues/index.html",
+ "slug": "welcome/i-have-issues",
+ "order": "5",
+ "parent": "item-welcome",
+ "title": "I have issues",
+ "description": "You have a problem or would like to contribute to anything in our universe? That's awesome! All issues, feature requests and general thumbs up should happen in our issue queue on github: https://gith",
+ "metadata": {
+ "created": 1553556295,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 1,
+ "schema": [
+ {
+ "resource": "#b54c9847-4d26-90ae-d748",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
}
- },
- {
- "id": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
- "indent": "2",
- "location": "pages\/documentation-1\/haxcms\/theming\/index.html",
- "slug": "documentation-1\/haxcms\/theming",
- "order": "6",
- "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
- "title": "Theming",
- "description": "There are multiple ways to \"theme\" in HAXcms that align with the skillsets of the person doing the theme development. Know web components? Cool. Know basic CSS and HTML? Cool. Want to build something ",
- "metadata": {
- "created": 1550643005,
- "updated": 1617805490
+ ],
+ "tags": {
+ "p": 1,
+ "a11y-gif-player": 1
+ },
+ "elements": 2
+ }
+ }
+ },
+ {
+ "id": "item-677468f6-7bff-4bb6-bd2a-18520d88b3c4",
+ "indent": "1",
+ "location": "pages/integrations-1/classicpress-1/index.html",
+ "slug": "integrations-1/classicpress-1",
+ "order": "5",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "ClassicPress",
+ "description": "ClassicPress is a popular fork of WordPress that's even easier to get HAX up and running then it is in the original!Get the HAX plugin from the wordpress registryGo to edit / create a page/post ",
+ "metadata": {
+ "created": 1565279009,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 1,
+ "paragraphs": 2,
+ "schema": [
+ {
+ "resource": "#85219ed3-d806-24d7-5c02",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
}
- },
- {
- "id": "item-c5e61b84-e88a-5a48-29c6-5908117ec505",
- "indent": "1",
- "location": "pages\/integrations-1\/creating-new-ones\/index.html",
- "slug": "integrations-1\/creating-new-ones",
- "order": "7",
- "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
- "title": "Creating new ones!",
- "description": "The main piece to our integrations is wrapped up in something we call \"The magic script\". The magic script is a standard way of dynamically discovering and importing the definitions of web components ",
- "metadata": {
- "created": 1548828434,
- "updated": 1617805490,
- "files": [
- {
- "path": "\/var\/www\/html\/_sites\/haxtheweb\/files\/59453a821222752c90fa970c937c2c396bff61f5-ngdle-university-faculty-side.jpg",
- "fullUrl": "\/_sites\/haxtheweb\/files\/59453a821222752c90fa970c937c2c396bff61f5-ngdle-university-faculty-side.jpg",
- "url": "files\/59453a821222752c90fa970c937c2c396bff61f5-ngdle-university-faculty-side.jpg",
- "type": "image\/jpeg",
- "name": "59453a821222752c90fa970c937c2c396bff61f5-ngdle-university-faculty-side.jpg",
- "size": 51809
- }
- ],
- "readtime": 3,
- "contentDetails": {
- "headings": 3,
- "paragraphs": 8,
- "schema": [],
- "tags": {
- "p": 8,
- "code-sample": 2,
- "full-width-image": 1,
- "h2": 3,
- "ol": 1
- },
- "elements": 15
- }
+ ],
+ "tags": {
+ "p": 2,
+ "ol": 1,
+ "h2": 1,
+ "video-player": 1
+ },
+ "elements": 5
+ }
+ }
+ },
+ {
+ "id": "item-c7500902-9aed-4117-8949-a6597a02dada",
+ "indent": "2",
+ "location": "pages/documentation-1/haxcms/troubleshooting/index.html",
+ "slug": "documentation-1/haxcms/troubleshooting",
+ "order": "5",
+ "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "title": "Troubleshooting",
+ "description": "These are some common issues / resolutions in HAXcms related to installation, publishing, etc.I installed HAXcms and forgot my passwordYour username and password can be found in _config/config.php o",
+ "metadata": {
+ "created": 1553555764,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-4de60a5f-98ab-a602-edfc-0cf024e83755",
+ "indent": "2",
+ "location": "pages/documentation-1/hax-development/hax-app-store/index.html",
+ "slug": "documentation-1/hax-development/hax-app-store",
+ "order": "6",
+ "parent": "item-534ed4c7-2468-366f-5410-adc169efcebc",
+ "title": "HAX app store",
+ "description": "",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-897a9839-4ca3-a336-4795-afca7b6de0ee",
+ "indent": "1",
+ "location": "pages/integrations-1/gravcms/index.html",
+ "slug": "integrations-1/gravcms",
+ "order": "6",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "GravCMS",
+ "description": "There's two plugins needed to run HAX on GravCMS - The web components and HAX plugins.Web components plugin - provides the build routine and installation instructionsHAX plugin - editor capab",
+ "metadata": {
+ "created": 1548826475,
+ "updated": 1617805490,
+ "readtime": 1,
+ "contentDetails": {
+ "headings": 0,
+ "paragraphs": 2,
+ "schema": [
+ {
+ "resource": "#f0356db6-f345-316d-1426",
+ "prefix": "oer:http://oerschema.org/ schema:http://schema.org/ dc:http://purl.org/dc/terms/ foaf:http://xmlns.com/foaf/0.1/ cc:http://creativecommons.org/ns# bib:http://bib.schema.org "
}
+ ],
+ "tags": {
+ "p": 2,
+ "ul": 1,
+ "media-image": 1
+ },
+ "elements": 4
+ }
+ }
+ },
+ {
+ "id": "item-a52fb685-0a2f-4bc0-8e62-457cf01d66ed",
+ "indent": "2",
+ "location": "pages/documentation-1/haxcms/theming/index.html",
+ "slug": "documentation-1/haxcms/theming",
+ "order": "6",
+ "parent": "item-4bce3546-4d53-4456-8eae-494c79180229",
+ "title": "Theming",
+ "description": "There are multiple ways to \"theme\" in HAXcms that align with the skillsets of the person doing the theme development. Know web components? Cool. Know basic CSS and HTML? Cool. Want to build something ",
+ "metadata": {
+ "created": 1550643005,
+ "updated": 1617805490
+ }
+ },
+ {
+ "id": "item-c5e61b84-e88a-5a48-29c6-5908117ec505",
+ "indent": "1",
+ "location": "pages/integrations-1/creating-new-ones/index.html",
+ "slug": "integrations-1/creating-new-ones",
+ "order": "7",
+ "parent": "item-ac67dab5-8208-65e3-c3e4-267b1bf6079f",
+ "title": "Creating new ones!",
+ "description": "The main piece to our integrations is wrapped up in something we call \"The magic script\". The magic script is a standard way of dynamically discovering and importing the definitions of web components ",
+ "metadata": {
+ "created": 1548828434,
+ "updated": 1617805490,
+ "files": [
+ {
+ "path": "/var/www/html/_sites/haxtheweb/files/59453a821222752c90fa970c937c2c396bff61f5-ngdle-university-faculty-side.jpg",
+ "fullUrl": "/_sites/haxtheweb/files/59453a821222752c90fa970c937c2c396bff61f5-ngdle-university-faculty-side.jpg",
+ "url": "files/59453a821222752c90fa970c937c2c396bff61f5-ngdle-university-faculty-side.jpg",
+ "type": "image/jpeg",
+ "name": "59453a821222752c90fa970c937c2c396bff61f5-ngdle-university-faculty-side.jpg",
+ "size": 51809
+ }
+ ],
+ "readtime": 3,
+ "contentDetails": {
+ "headings": 3,
+ "paragraphs": 8,
+ "schema": [],
+ "tags": {
+ "p": 8,
+ "code-sample": 2,
+ "full-width-image": 1,
+ "h2": 3,
+ "ol": 1
+ },
+ "elements": 15
}
- ]
+ }
+ }
+ ]
}
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index f6411fa..7c8b17b 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1,7 +1,7 @@
-
+
https://haxtheweb.org/https://haxtheweb.org//documentation-1/hax-development
@@ -35,7 +35,7 @@
https://haxtheweb.org/https://haxtheweb.org//welcome
- 2021-04-07T14:24:50+00:00
+ 2022-08-25T18:26:55+00:00daily1.0
@@ -149,7 +149,7 @@
https://haxtheweb.org/https://haxtheweb.org//documentation-1
- 2021-04-07T14:24:50+00:00
+ 2022-08-25T18:27:18+00:00daily1.0
@@ -197,7 +197,7 @@
https://haxtheweb.org/https://haxtheweb.org//f-a-q-1
- 2021-04-07T14:43:59+00:00
+ 2022-08-25T18:39:36+00:00daily1.0
diff --git a/sitemap.xml.gz b/sitemap.xml.gz
index 18f58ed..6b3e093 100644
Binary files a/sitemap.xml.gz and b/sitemap.xml.gz differ
diff --git a/wc-registry.json b/wc-registry.json
new file mode 120000
index 0000000..108ba75
--- /dev/null
+++ b/wc-registry.json
@@ -0,0 +1 @@
+../../wc-registry.json
\ No newline at end of file
diff --git a/web-dev-server.haxcms.config.cjs b/web-dev-server.haxcms.config.cjs
new file mode 100644
index 0000000..7a7380d
--- /dev/null
+++ b/web-dev-server.haxcms.config.cjs
@@ -0,0 +1,10 @@
+const path = require("path");
+module.exports = {
+ watch: true,
+ https: true,
+ nodeResolve: true,
+ open: true,
+ dedupe: true,
+ rootDir: "./",
+ appIndex: path.join(process.cwd(), "index.html"),
+};